Em 7 de outubro de 2026, a Shifter tem o maior pool de IPs dos EUA ativos, mais do que a Oxylabs e a Bright Data, por uma fração do custo.A Shifter agora tem o maior pool de IPs ativos dos EUA

Ver benchmarks

Extração de dados

Como Usar uma API de Web Scraping: Guia Prático para Iniciantes

Da sua primeira requisição ao JSON estruturado: um guia passo a passo para usar uma API de web scraping, com Python testado, tratamento de erros e as configurações que importam.

Matt Brown

15 de outubro de 2026 · 8 min de leitura

Uma API de web scraping faz as partes difíceis de coletar páginas da web por você: ela escolhe o proxy, executa o navegador quando uma página precisa, refaz as tentativas em caso de falha e devolve o HTML ou os dados que você pediu. Você envia uma requisição com uma URL; o serviço cuida de tudo entre você e o site.

Este guia leva você da primeira requisição até um scraper pequeno e confiável, usando a Web Scraping API da Shifter como exemplo. As etapas e os padrões são os mesmos para a maioria dos serviços desse tipo. Se você quiser entender primeiro o que acontece por trás da requisição, nosso artigo explicativo sobre como funciona uma web scraping API cobre isso.

Etapa 1: obtenha uma chave de API

Toda requisição é autenticada com uma chave de API. No painel da Shifter, abra Web Scraping API, depois API Keys, e copie uma chave ativa.

Mantenha a chave fora do seu código. Guarde-a em uma variável de ambiente, para que ela nunca acabe em um repositório ou em uma captura de tela:

export SHIFTER_SCRAPER_KEY="your-key-here"

Etapa 2: faça sua primeira requisição

A API é um único endpoint, https://scrape.shifter.io/v1. Passe sua chave e a página que você quer como parâmetros de consulta:

curl "https://scrape.shifter.io/v1?api_key=$SHIFTER_SCRAPER_KEY&url=https://example.com"

A resposta é o HTML da página, obtido através dos proxies da API. É tudo que uma requisição básica precisa.

Etapa 3: ative a renderização de JavaScript quando a página precisar

Muitos sites modernos enviam uma página quase vazia e montam o conteúdo no navegador com JavaScript. Se o HTML que você recebe estiver sem os dados que você vê no seu navegador, adicione render_js=1. A API então carrega a página em um navegador headless e retorna o resultado renderizado. Na Shifter, uma requisição renderizada custa o mesmo que uma comum.

Duas configurações relacionadas ajudam com páginas lentas:

  • wait_for_css espera até que um elemento específico apareça antes de retornar, para que você não receba a página antes de seus dados terem carregado.
  • timeout dá mais tempo para sites lentos.

A renderização é mais lenta do que uma busca simples, então use-a apenas para páginas que precisam dela. Nosso guia sobre scraping de sites com muito JavaScript explica como identificar isso.

Etapa 4: obtenha JSON em vez de HTML

Analisar HTML manualmente é onde a maioria dos scrapers quebra. Em vez disso, descreva os campos que você quer com extract_rules: um objeto JSON mapeando cada nome de campo para um seletor CSS e o que retornar dele.

outputRetorna
textO texto do elemento
htmlO HTML interno do elemento
@href, @src e assim por dianteO valor de um atributo

Por exemplo, {"title": {"selector": "h1", "output": "text"}} retorna {"title": "Example Domain"} para example.com. Muitas páginas também incorporam seus dados já como JSON estruturado; nosso guia sobre extrair JSON-LD em vez de analisar HTML mostra como usá-lo.

Etapa 5: trate os erros corretamente

Todo scraper encontra falhas: sites lentos, páginas que não renderizam, requisições demais ao mesmo tempo. A API informa o que deu errado por meio do código de status, e a resposta correta depende de qual código você recebe:

StatusSignificadoO que fazer
200SucessoUse a resposta
400, 401, 403Um problema com sua requisição, chave ou recursos do planoCorrija; tentar novamente não ajudará
408O site de destino expirou (timeout)Tente novamente, talvez com um timeout maior
422A página falhou ao renderizarTente novamente; verifique se o site funciona em um navegador normal
429Requisições simultâneas demais para o seu planoEspere, depois tente novamente
500Um erro internoTente novamente após um breve atraso

Na Shifter, requisições com falha não são cobradas; você paga um crédito para cada resposta bem-sucedida. A API também tenta novamente internamente algumas falhas antes de responder, e essas contam como uma única chamada.

Juntando tudo

Aqui está um pequeno auxiliar em Python que envolve todas as cinco etapas: ele lê a chave do ambiente, adiciona renderização e extração quando você solicita, tenta novamente os erros que vale a pena tentar novamente com uma pausa crescente, e para imediatamente nos que precisam de uma correção.

import json
import os
import time

import requests

API = "https://scrape.shifter.io/v1"
RETRY = {408, 422, 429, 500}          # worth another try after a pause
STOP = {400, 401, 403}                # fix the request; retrying will not help


def scrape(url, render_js=False, extract_rules=None, attempts=3, session=None, wait=2.0):
    """Fetch one page through the Web Scraping API; returns text, or parsed JSON with extract_rules."""
    session = session or requests.Session()
    params = {"api_key": os.environ["SHIFTER_SCRAPER_KEY"], "url": url}
    if render_js:
        params["render_js"] = 1
    if extract_rules:
        params["extract_rules"] = json.dumps(extract_rules)
    for attempt in range(1, attempts + 1):
        response = session.get(API, params=params, timeout=120)
        if response.status_code == 200:
            return response.json() if extract_rules else response.text
        if response.status_code in STOP or attempt == attempts or response.status_code not in RETRY:
            raise RuntimeError(f"{url}: HTTP {response.status_code} {response.text[:200]}")
        time.sleep(wait * attempt)    # back off a little more each time

Usando-o:

from scrape_api import scrape

html = scrape("https://example.com")
data = scrape("https://example.com", extract_rules={"title": {"selector": "h1", "output": "text"}})
print(data["title"])

Testamos a construção de requisições, as novas tentativas e as condições de parada do auxiliar contra respostas simuladas para cada código de status acima.

Se você é novo em lógica de novas tentativas, nosso guia sobre retry e backoff para web scrapers explica por que a pausa cresce a cada tentativa.

Etapa 6: escale

Quando as requisições individuais funcionarem, três coisas importam à medida que você cresce:

  • Concorrência. Envie várias requisições ao mesmo tempo com um pool de threads ou um cliente assíncrono. Cada plano tem um limite de concorrência (de 20 a 500 requisições simultâneas na Shifter, dependendo do plano); fique abaixo dele e trate 429 como um sinal para desacelerar.
  • Localização e tipo de proxy. Use o parâmetro country para buscar uma página como ela aparece em um país específico. Nos planos Growth e acima, premium_proxy roteia as requisições por IPs residenciais para sites que bloqueiam tráfego de datacenter.
  • Sessões. Para fluxos de múltiplas etapas, um session_id mantém o mesmo IP e os mesmos cookies entre as requisições.

Quando os dados começarem a fluir, armazene-os em algum lugar que você possa consultar. Nosso guia sobre mover dados da web scraping API para SQL cobre um pipeline limpo da resposta até a tabela.

Erros comuns de iniciantes

  • Fixar a chave de API diretamente no código. Use uma variável de ambiente ou um gerenciador de segredos.
  • Renderizar tudo. Tente primeiro uma requisição simples; renderize apenas as páginas que precisam disso.
  • Tentar novamente tudo. Um 401 falhará para sempre. Tente novamente apenas os erros que podem ter sucesso depois.
  • Analisar HTML manualmente. Use regras de extração ou JSON incorporado sempre que possível.
  • Ignorar limites de concorrência. Requisições paralelas demais produzem 429s, não velocidade.

Perguntas frequentes

O que é uma web scraping API?

Um serviço que busca páginas da web para você por meio de seus próprios proxies e navegadores, lida com novas tentativas e bloqueios, e retorna o HTML ou os dados extraídos em resposta a uma única requisição.

Preciso saber programar para usar uma web scraping API?

Um pouco. Uma única requisição funciona pela linha de comando com curl, mas a maioria dos projetos reais usa um script curto em Python ou outra linguagem para enviar requisições, tratar erros e armazenar os resultados.

Quando devo ativar a renderização de JavaScript?

Quando o HTML retornado sem renderização estiver sem conteúdo que você vê no seu navegador. Muitos sites constroem suas páginas com JavaScript, e a renderização retorna a página como um navegador a exibiria.

Requisições com falha custam créditos?

Na Shifter, não. Você é cobrado um crédito por resposta bem-sucedida, e requisições com falha, incluindo erros do site de destino, são gratuitas.

Conclusão

Usar uma web scraping API se resume a alguns hábitos: manter a chave no ambiente, começar com requisições simples e adicionar renderização apenas onde necessário, pedir JSON com regras de extração em vez de analisar HTML, tentar novamente apenas os erros que podem ter sucesso depois, e respeitar a concorrência do seu plano. O auxiliar acima cobre todos eles em cerca de vinte linhas. Planos e limites estão na página de preços da Web Scraping API.

Pronto para começar?

Experimente os proxies residenciais da Shifter, mais de 205M IPs, mais de 195 países, a partir de $ 0,75/GB.

Começar