> For the complete documentation index, see [llms.txt](https://developers.oxylabs.io/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://developers.oxylabs.io/products/pt-br/api-web/scrape.md).

# /scrape

Aprenda a usar o endpoint /scrape da API Web da Oxylabs para buscar e analisar qualquer página web no formato que você quiser.

O `/v1/scrape` endpoint busca páginas web por URL, tratando automaticamente a renderização headless, rotação de proxy, desafios de acesso e localização. Ele retorna dados estruturados da página em Markdown, HTML, JSON ou como capturas de tela PNG.

## Exemplo de solicitação

O endpoint aceita um payload JSON que define a URL de destino, os formatos de saída solicitados, as opções de renderização e o contexto de geolocalização.

```bash
curl https://webapi.oxylabs.io/v1/scrape \
  -H "Authorization: Bearer $OXYLABS_WEB_API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{
      "url": "https://artificialintelligenceact.eu/implementation-timeline/",
      "output": ["markdown"]
  }'
```

### Parâmetros da solicitação

<table><thead><tr><th width="98">Parâmetro</th><th width="566">Descrição</th><th width="93">Tipo</th></tr></thead><tbody><tr><td><mark style="background-color:green;"><code>url</code></mark></td><td>Absoluto <code>http</code> / <code>https</code> URL de destino.</td><td>cadeia de caracteres</td></tr><tr><td><code>output</code></td><td>Formato de resposta: <code>markdown</code>, <code>html</code>, <code>json</code>, <code>screenshot</code>. Suporta múltiplos valores. Padrão: <code>html</code></td><td>array de cadeias de caracteres</td></tr><tr><td><code>json</code></td><td>Quando <code>output: ["json"]</code>, pode ser usado para análise personalizada de IA por meio de <code>prompt</code> ou <code>schema</code>. Veja <a href="/products/pt-br/api-web/scrape/parsing-por-ia.md">Análise de IA</a>.</td><td>objeto</td></tr><tr><td><code>localização</code></td><td>Código de país ISO 3166-1 alpha-2 de dois caracteres (por exemplo, <code>"US"</code>, <code>"DE"</code>, <code>"JP"</code>).</td><td>cadeia de caracteres</td></tr><tr><td><code>device</code></td><td>Emulação de User-Agent e viewport: <code>"desktop"</code> (padrão) ou <code>"mobile"</code>. </td><td>cadeia de caracteres</td></tr><tr><td><code>run_js</code></td><td>Habilita a renderização de JavaScript quando definido como <code>true</code>. Padrão: <code>false</code>.</td><td>booleano</td></tr></tbody></table>

&#x20;    – parâmetro obrigatório.

<details>

<summary><strong><code>output</code></strong></summary>

O `output` array permite buscar múltiplos formatos de saída em uma única execução da solicitação. Abaixo está um exemplo de solicitação com saída combinada:

```json
{
  "url": "https://example.com/product",
  "output": ["markdown", "json"],
  "json": {
    "prompt": "Extraia o nome do produto, o status de estoque e o preço como um número."
  }
}
```

<table data-header-hidden><thead><tr><th width="119"></th><th></th></tr></thead><tbody><tr><td><code>markdown</code></td><td>Converte a árvore DOM em Markdown limpo e estruturado, removendo scripts de navegação e formatação de estilo. Otimizado para ingestão em janelas de contexto de LLM para minimizar o uso de tokens.</td></tr><tr><td><code>html</code></td><td>A marcação bruta da página. Use quando precisar da própria marcação (atributos, JSON-LD incorporado, dados embutidos inline). Não recomendado para coleta de conteúdo da página.</td></tr><tr><td><code>screenshot</code></td><td>Imagem PNG codificada em Base64 da página totalmente renderizada. <strong><code>run_js: true</code> é obrigatório</strong>, caso contrário a solicitação é rejeitada.</td></tr><tr><td><code>json</code></td><td>Extração estruturada na mesma solicitação da recuperação (sem seletores para escrever ou manter). Descreva os campos em um <code>prompt</code>, ou fixe a forma exata deles com um <code>schema</code>. Veja <a href="/products/pt-br/api-web/scrape/parsing-por-ia.md">análise de IA</a>.</td></tr></tbody></table>

{% hint style="info" %}
**Exceção:** `video` formato de saída está disponível para `/scrape/media` [scrapers dedicados](/products/pt-br/api-web/scrape/scrapers-dedicados.md).
{% endhint %}

</details>

<details>

<summary><strong><code>run_js</code></strong></summary>

Executa o JavaScript da própria página antes que o conteúdo seja capturado.

A omissão `run_js` usa o caminho de execução ideal para o caminho de origem fornecido. Definir explicitamente `"run_js": true` usa uma instância de Headless Browser para executar scripts do lado do cliente, solicitações XHR dinâmicas e renderização de Single Page Application (SPA).

```json
{
  "url": "https://example.com/spa-dashboard",
  "output": ["markdown"],
  "run_js": true
}
```

* **Impacto na latência:** A renderização com Headless Browser aumenta significativamente a duração da solicitação. Defina timeouts HTTP do cliente para pelo menos `150` segundos. Quando for necessário alto volume, [entrega assíncrona](/products/pt-br/api-web/scrape/modos-de-entrega.md) é recomendada.
* **Otimização de recursos:** Sempre tente buscar o conteúdo sem ele. Para páginas estáticas ou feeds RSS/atom, passe `"run_js": false` para maximizar a taxa de transferência das solicitações e minimizar a latência. Escolha a renderização apenas quando necessário.

</details>

<details>

<summary><strong><code>localização</code></strong></summary>

A segmentação geográfica roteia solicitações por nós de saída de proxy localizados. Isso garante que preços localizados, variações de idioma e conteúdo exclusivo da região sejam entregues corretamente.

```json
{
  "url": "https://example.com/pricing",
  "output": ["html"],
  "location": "DE",
  "check_empty_geo": true
}
```

{% hint style="info" %}
Ao usar [Dedicated Scrapers](/products/pt-br/api-web/scrape/scrapers-dedicados.md), alguns parâmetros de localização podem ter nomes diferentes.
{% endhint %}

</details>

## Exemplo de saída

Uma solicitação bem-sucedida retorna um status HTTP `200 OK` com um envelope padrão. Os campos dentro de `results[]` com formatos de saída não solicitados retornam `null`.

```json
{
  "status": 200,
  "results": [
    {
      "html": null,
      "markdown": "# Implementation Timeline\n\nProviders need to be compliant...",
      "screenshot": null,
      "json": null,
      "metadata": {
        "page": 1,
        "run_js": false,
        "url": "https://artificialintelligenceact.eu/implementation-timeline/"
      }
    }
  ],
  "params": {
    "url": "https://artificialintelligenceact.eu/implementation-timeline/",
    "output": ["markdown"],
    "json": { "schema": null, "prompt": null },
    "location": null,
    "device": "desktop",
    "run_js": null
  },
  "metadata": {
    "timestamp": 1787431568,
    "request_id": "7503078851572948993"
  }
}
```

{% hint style="info" %}
**`results[]` campo com formatos de saída não solicitados retornam `null`.** \
Por exemplo, solicitar `["markdown"]` preenche `markdown` e deixa `html`, `screenshot` e `json` como null. Qualquer [scraper dedicado](/products/pt-br/api-web/scrape/scrapers-dedicados.md) coloca seus campos estruturados em `json`.
{% endhint %}

### Dicionário de saída

<table><thead><tr><th width="208">Campo</th><th>Descrição</th><th width="92">Tipo</th></tr></thead><tbody><tr><td><code>status</code></td><td>Código de status HTTP, <code>200</code> em caso de sucesso. Veja <a href="/products/pt-br/api-web/solucao-de-problemas.md">Códigos de erro</a>.</td><td>inteiro</td></tr><tr><td><code>results</code></td><td>Uma entrada para a URL solicitada.</td><td>array</td></tr><tr><td><code>results[].markdown</code></td><td>Página em Markdown, se solicitada. <code>null</code> caso contrário.</td><td>cadeia de caracteres</td></tr><tr><td><code>results[].html</code></td><td>Marcação bruta do resultado, se solicitada. <code>null</code> caso contrário.</td><td>cadeia de caracteres</td></tr><tr><td><code>results[].json</code></td><td>Campos analisados de um <a href="/products/pt-br/api-web/scrape/scrapers-dedicados.md">scraper dedicado</a> ou <a href="/products/pt-br/api-web/scrape/parsing-por-ia.md">analisador de IA</a>, se solicitado <code>null</code> caso contrário.</td><td>objeto</td></tr><tr><td><code>results[].screenshot</code></td><td>String de imagem codificada em Base64, se solicitada. <code>null</code> caso contrário.</td><td>cadeia de caracteres</td></tr><tr><td><code>results[].metadata.url</code></td><td>URL buscada para scraping após redirecionamentos.</td><td>cadeia de caracteres</td></tr><tr><td><code>params</code></td><td>Todos os parâmetros usados nas solicitações, com os padrões aplicados.</td><td>objeto</td></tr><tr><td><code>metadata.timestamp</code></td><td>Timestamp Unix em segundos.</td><td>inteiro</td></tr><tr><td><code>metadata.request_id</code></td><td>Identificador desta solicitação. <strong>Inclua-o nos tickets de suporte.</strong></td><td>cadeia de caracteres</td></tr></tbody></table>

## Latência e concorrência

Uma coleta renderiza uma página real com orçamento em **segundos, não em milissegundos**. Recomendamos algumas práticas seguras para se ajustar a isso:

<table data-header-hidden><thead><tr><th width="123"></th><th></th></tr></thead><tbody><tr><td><strong>Timeout do cliente</strong></td><td>150 segundos é um padrão seguro, enquanto um timeout de 10 segundos pode falhar em páginas que teriam sido bem-sucedidas. Para maior volume (por exemplo, mídia, grandes execuções de SERP etc.) com risco de timeout do cliente, execute os mesmos scrapers com entrega assíncrona em vez de bloquear a solicitação. Veja <a href="/products/pt-br/api-web/scrape/modos-de-entrega.md">Modos de entrega</a>.</td></tr><tr><td><strong>Limite de concorrência</strong></td><td>Raspar dez resultados de busca em paralelo multiplica o custo e a latência para páginas que você não vai ler. Raspe as duas ou três que plausivelmente respondem à pergunta e aumente a concorrência apenas gradualmente até que <code>429</code> o erro seja alcançado.</td></tr></tbody></table>

## Scrapers dedicados

Além da coleta genérica por URL, scrapers específicos do alvo podem ser usados com `POST /v1/scrape/{target}/{collection}`. Eles aceitam parâmetros específicos do alvo (por exemplo, ASINs, nós de navegação, CEPs de loja) e retornam campos estruturados em `results[].json`:

```bash
curl https://webapi.oxylabs.io/v1/scrape/amazon/product \
  -H "Authorization: Bearer $OXYLABS_WEB_API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{
    "query": "B0935DN1BN",
    "output": ["json"],
    "location": "10115",
    "domain": "de",
    "currency": "EUR"
  }'
```

Veja [Scrapers dedicados](/products/pt-br/api-web/scrape/scrapers-dedicados.md) para visões gerais dos alvos (Google, Amazon, YouTube, Bing, IA & LLMs, Comércio etc.).


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation by asking a question.

Perform an HTTP GET request on the following URL with the `ask` and `goal` query parameters:

```
GET https://developers.oxylabs.io/products/pt-br/api-web/scrape.md?ask=<question>&goal=<user_goal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is what the user is ultimately trying to achieve, the reason they need the answer. Sharing it helps GitBook give you a better, more relevant answer. A goal is most helpful when it describes the outcome the user wants rather than restating the question. For example, with `ask=how do I create an API token`, a goal like `automate deployments from our CI pipeline` lets GitBook tailor the answer to that use case.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
