# Formação de solicitações

Leia guias detalhados sobre como começar e fazer requisições usando [**Web Scraper API**](https://developers.oxylabs.io/documentation/pt-br/solucoes-de-scraping/web-scraper-api) para diferentes sites.

## Mecanismos de busca

### Primeiros passos

Selecione o mecanismo de busca que você quer rastrear: [**Google**](https://developers.oxylabs.io/documentation/pt-br/solucoes-de-scraping/web-scraper-api/targets/google), [**Bing**](https://developers.oxylabs.io/documentation/pt-br/solucoes-de-scraping/web-scraper-api/targets/bing), [**Outros mecanismos de busca**](https://developers.oxylabs.io/documentation/pt-br/solucoes-de-scraping/web-scraper-api/targets/generic-target).

### Exemplo de requisição

{% tabs %}
{% tab title="cURL" %}

```shell
curl 'https://realtime.oxylabs.io/v1/queries' \
--user 'USERNAME:PASSWORD' \
-H 'Content-Type: application/json' \
-d '{
        "source": "google_search",
        "query": "adidas"
    }'
```

{% endtab %}

{% tab title="Python" %}

```python
import requests
from pprint import pprint

# Estruturar payload.
payload = {
    'source': 'google_search',
    'query': 'adidas',
}

# Obter resposta.
response = requests.request(
    'POST',
    'https://realtime.oxylabs.io/v1/queries',
    auth=('USERNAME', 'PASSWORD'),
    json=payload,
)

# Imprimir resposta formatada no stdout.
pprint(response.json())
```

{% endtab %}

{% tab title="Node.js" %}

```javascript
const https = require("https");

const username = "USERNAME";
const password = "PASSWORD";
const body = {
    source: "google_search",
    query: "adidas",
};

const options = {
    hostname: "realtime.oxylabs.io",
    path: "/v1/queries",
    method: "POST",
    headers: {
        "Content-Type": "application/json",
        Authorization:
            "Basic " + Buffer.from(`${username}:${password}`).toString("base64"),
    },
};

const request = https.request(options, (response) => {
    let data = "";

    response.on("data", (chunk) => {
        data += chunk;
    });

    response.on("end", () => {
        const responseData = JSON.parse(data);
        console.log(JSON.stringify(responseData, null, 2));
    });
});

request.on("error", (error) => {
    console.error("Error:", error);
});

request.write(JSON.stringify(body));
request.end();
```

{% endtab %}

{% tab title="PHP" %}

```php
<?php

$params = array(
    'source' => 'google_search',
    'query' => 'adidas',
);

$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, "https://realtime.oxylabs.io/v1/queries");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($params));
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_USERPWD, "USERNAME" . ":" . "PASSWORD");

$headers = array();
$headers[] = "Content-Type: application/json";
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);

$result = curl_exec($ch);
echo $result;

if (curl_errno($ch)) {
    echo 'Error:' . curl_error($ch);
}
curl_close($ch);
```

{% endtab %}

{% tab title="C#" %}

```csharp
using System;
using System.Net.Http;
using System.Net.Http.Json;
using System.Threading.Tasks;

namespace OxyApi
{
    class Program
    {
        static async Task Main()
        {
            const string Username = "USERNAME";
            const string Password = "PASSWORD";

            var parameters = new {
                source = "google_search",
                query = "adidas",
            };

            var client = new HttpClient();

            Uri baseUri = new Uri("https://realtime.oxylabs.io");
            client.BaseAddress = baseUri;

            var requestMessage = new HttpRequestMessage(HttpMethod.Post, "/v1/queries");
            requestMessage.Content = JsonContent.Create(parameters);

            var authenticationString = $"{Username}:{Password}";
            var base64EncodedAuthenticationString = Convert.ToBase64String(System.Text.Encoding.ASCII.GetBytes(authenticationString));
            requestMessage.Headers.Add("Authorization", "Basic " + base64EncodedAuthenticationString);

            var response = await client.SendAsync(requestMessage);
            var contents = await response.Content.ReadAsStringAsync();

            Console.WriteLine(contents);
        }
    }
}
```

{% endtab %}

{% tab title="Golang" %}

```go
package main

import (
	"bytes"
	"encoding/json"
	"fmt"
	"io/ioutil"
	"net/http"
)

func main() {
	const Username = "USERNAME"
	const Password = "PASSWORD"

	payload := map[string]interface{}{
		"source": "google_search",
		"query":  "adidas",
	}

	jsonValue, _ := json.Marshal(payload)

	client := &http.Client{}
	request, _ := http.NewRequest("POST",
		"https://realtime.oxylabs.io/v1/queries",
		bytes.NewBuffer(jsonValue),
	)

	request.SetBasicAuth(Username, Password)
	request.Header.Set("Content-Type", "application/json")
	response, _ := client.Do(request)

	responseText, _ := ioutil.ReadAll(response.Body)
	fmt.Println(string(responseText))
}
```

{% endtab %}

{% tab title="HTTP" %}

```http
https://realtime.oxylabs.io/v1/queries?source=google_search&query=adidas&access_token=12345abcde
```

{% endtab %}

{% tab title="Java" %}

```java
package org.example;

import okhttp3.*;
import org.json.JSONObject;
import java.util.concurrent.TimeUnit;

public class Main implements Runnable {
    private static final String AUTHORIZATION_HEADER = "Authorization";
    public static final String USERNAME = "USERNAME";
    public static final String PASSWORD = "PASSWORD";

    public void run() {
        JSONObject jsonObject = new JSONObject();
        jsonObject.put("source", "google_search");
        jsonObject.put("query", "adidas");

        Authenticator authenticator = (route, response) -> {
            String credential = Credentials.basic(USERNAME, PASSWORD);
            return response
                    .request()
                    .newBuilder()
                    .header(AUTHORIZATION_HEADER, credential)
                    .build();
        };

        var client = new OkHttpClient.Builder()
                .authenticator(authenticator)
                .readTimeout(180, TimeUnit.SECONDS)
                .build();

        var mediaType = MediaType.parse("application/json; charset=utf-8");
        var body = RequestBody.create(jsonObject.toString(), mediaType);
        var request = new Request.Builder()
                .url("https://realtime.oxylabs.io/v1/queries")
                .post(body)
                .build();

        try (var response = client.newCall(request).execute()) {
            if (response.body() != null) {
                try (var responseBody = response.body()) {
                    System.out.println(responseBody.string());
                }
            }
        } catch (Exception exception) {
            System.out.println("Error: " + exception.getMessage());
        }

        System.exit(0);
    }

    public static void main(String[] args) {
        new Thread(new Main()).start();
    }
}
```

{% endtab %}

{% tab title="JSON" %}

```json
{
    "source": "google_search",
    "query": "adidas"
}
```

{% endtab %}
{% endtabs %}

Usamos o método de integração [**Realtime**](https://developers.oxylabs.io/documentation/pt-br/solucoes-de-scraping/web-scraper-api/integration-methods/realtime) síncrona em nossos exemplos. Se você quiser usar [**Proxy Endpoint**](https://developers.oxylabs.io/documentation/pt-br/solucoes-de-scraping/web-scraper-api/integration-methods/proxy-endpoint) ou integração assíncrona [**Push-Pull**](https://developers.oxylabs.io/documentation/pt-br/solucoes-de-scraping/web-scraper-api/integration-methods/push-pull) consulte os [**métodos de integração**](https://developers.oxylabs.io/documentation/pt-br/solucoes-de-scraping/web-scraper-api/integration-methods) na seção.

### Formando uma requisição

1. Escolha seu método de integração: síncrono ([**Realtime**](https://developers.oxylabs.io/documentation/pt-br/solucoes-de-scraping/web-scraper-api/integration-methods/realtime), [**Proxy Endpoint**](https://developers.oxylabs.io/documentation/pt-br/solucoes-de-scraping/web-scraper-api/integration-methods/proxy-endpoint)) ou assíncrono  ([**Push-Pull**](https://developers.oxylabs.io/documentation/pt-br/solucoes-de-scraping/web-scraper-api/integration-methods/push-pull)).
2. Ao formar uma requisição, inclua os seguintes elementos:

{% tabs %}
{% tab title="Realtime" %}

1. **Endpoint:**

```
POST https://realtime.oxylabs.io/v1/queries
```

2. **Nome de usuário e senha** ([**Autenticação HTTP**](https://developer.mozilla.org/en-US/docs/Web/HTTP/Authentication))**.** Crie credenciais de usuário API durante seu [**cadastro de avaliação ou compra do produto**](https://dashboard.oxylabs.io/en/registration?productToBuy=SCRAPI_SERP)**.**

```
USERNAME:PASSWORD
```

{% hint style="warning" %}
Se você precisar de mais de um usuário de API para sua conta, por favor contate nosso [**suporte ao cliente**](mailto:support@oxylabs.io) ou envie uma mensagem ao nosso suporte via chat ao vivo 24/7.
{% endhint %}

3. **Content-type**. Ao enviar jobs, sempre adicione este cabeçalho:

```
Content-Type: application/json
```

4. **Payload:**
   1. `source` - Este parâmetro define o scraper que será usado para processar sua requisição.
   2. `URL` ou `query` - Forneça o `URL` ou `query` para o tipo de página que você quer rastrear. Consulte a tabela abaixo e as sub-páginas alvo correspondentes para orientações detalhadas sobre quando usar cada parâmetro.
   3. [**Parâmetros adicionais**](https://developers.oxylabs.io/documentation/pt-br/solucoes-de-scraping/web-scraper-api/features): Opcionalmente, você pode incluir parâmetros adicionais como `geo_location`, `user_agent_type`, `parse`, `render` e mais para personalizar sua requisição de scraping.

```json
{
    "source": "google_search",
    "query": "adidas",
    "geo_location": "California,United States",
    "parse": true
}
```

{% endtab %}

{% tab title="Proxy Endpoint" %}

1. **Endpoint:**

```
GET realtime.oxylabs.io:60000
```

2. **Ignorar certificados.** Em `cURL`, é `-k` ou `--insecure`.
3. **Nome de usuário e senha** ([**Autenticação HTTP**](https://developer.mozilla.org/en-US/docs/Web/HTTP/Authentication))**.** Crie credenciais de usuário API durante seu [**cadastro de avaliação ou compra do produto**](https://dashboard.oxylabs.io/en/registration?productToBuy=SCRAPI_SERP)**.**

```
USERNAME:PASSWORD
```

{% hint style="warning" %}
Se você precisar de mais de um usuário de API para sua conta, por favor contate nosso [**suporte ao cliente**](mailto:support@oxylabs.io) ou envie uma mensagem ao nosso suporte via chat ao vivo 24/7.
{% endhint %}

4. **Payload:**
   1. `URL` - Forneça o `URL` para a página que você quer rastrear.
   2. [**Parâmetros adicionais**](https://developers.oxylabs.io/documentation/pt-br/solucoes-de-scraping/web-scraper-api/features): Opcionalmente, você pode incluir parâmetros adicionais como `geo_location`, `user_agent_type`, `parse`, e envie-os como cabeçalhos.

```bash
curl -k -x realtime.oxylabs.io:60000 \
-U "USERNAME:PASSWORD" \
'https://www.google.com/search?q=adidas' \
-H "x-oxylabs-geo-location: California,United States" \
-H "x-oxylabs-parse: 1"
```

{% endtab %}

{% tab title="Push-Pull" %}

1. **Endpoint:**

```
POST https://data.oxylabs.io/v1/queries
```

2. **Nome de usuário e senha** ([**Autenticação HTTP**](https://developer.mozilla.org/en-US/docs/Web/HTTP/Authentication))**.** Crie credenciais de usuário API durante seu [**cadastro de avaliação ou compra do produto**](https://dashboard.oxylabs.io/en/registration?productToBuy=SCRAPI_SERP)**.**

```
USERNAME:PASSWORD
```

{% hint style="warning" %}
Se você precisar de mais de um usuário de API para sua conta, por favor contate nosso [**suporte ao cliente**](mailto:support@oxylabs.io) ou envie uma mensagem ao nosso suporte via chat ao vivo 24/7.
{% endhint %}

3. **Content-type**. Ao enviar jobs, sempre adicione este cabeçalho:

```
Content-Type: application/json
```

4. **Payload:**
   1. `source` - Este parâmetro define o scraper que será usado para processar sua requisição.
   2. `URL` ou `query` - Forneça o `URL` ou `query` para o tipo de página que você quer rastrear. Consulte a tabela abaixo e as sub-páginas alvo correspondentes para orientações detalhadas sobre quando usar cada parâmetro.
   3. [**Parâmetros adicionais**](https://developers.oxylabs.io/documentation/pt-br/solucoes-de-scraping/web-scraper-api/features): Opcionalmente, você pode incluir parâmetros adicionais como `geo_location`, `user_agent_type`, `parse`, e mais para personalizar sua requisição de scraping.

```json
{
    "source": "google_search",
    "query": "adidas",
    "geo_location": "California,United States",
    "parse": true
}
```

5. Ao enviar uma requisição, você receberá prontamente uma resposta JSON contendo todos os detalhes do job, incluindo parâmetros do job, ID do job e URLs para download dos resultados do job:

```
GET https://data.oxylabs.io/v1/queries/{job_id}/results
```

```
GET https://data.oxylabs.io/v1/queries/{job_id}/results?type=raw
```

```
GET https://data.oxylabs.io/v1/queries/{job_id}/results?type=parsed
```

```
GET https://data.oxylabs.io/v1/queries/{job_id}/results?type=png
```

{% endtab %}
{% endtabs %}

<table><thead><tr><th width="217">Alvo</th><th width="246">Fonte (URL de scraping)</th><th>Fonte (Usando Query)</th></tr></thead><tbody><tr><td><a href="../solucoes-de-scraping/web-scraper-api/targets/google"><strong>Google</strong></a></td><td><code>google</code></td><td><p><code>google_search</code>,</p><p><code>google_ads</code>,</p><p><code>google_lens</code>,</p><p><code>google_maps</code>,</p><p><code>google_travel_hotels</code>,</p><p><code>google_trends_explore</code></p></td></tr><tr><td><a href="../solucoes-de-scraping/web-scraper-api/targets/bing"><strong>Bing</strong></a></td><td><code>bing</code></td><td><code>bing_search</code></td></tr><tr><td><a href="../solucoes-de-scraping/web-scraper-api/targets/generic-target"><strong>Outros mecanismos de busca</strong></a></td><td><code>universal</code></td><td>Usar o <code>query</code> parâmetro não é suportado</td></tr></tbody></table>

## Marketplaces

### Primeiros passos

Selecione o marketplace online que você quer rastrear: [**Amazon**](https://developers.oxylabs.io/documentation/pt-br/solucoes-de-scraping/web-scraper-api/targets/amazon)**,** [**Google Shopping**](https://developers.oxylabs.io/documentation/pt-br/solucoes-de-scraping/web-scraper-api/targets/google)**,** [**Walmart**](https://developers.oxylabs.io/documentation/pt-br/solucoes-de-scraping/web-scraper-api/targets/walmart)**,** [**Best Buy**](https://developers.oxylabs.io/documentation/pt-br/solucoes-de-scraping/web-scraper-api/targets/north-american-e-commerce/bestbuy)**,** [**Etsy**](https://developers.oxylabs.io/documentation/pt-br/solucoes-de-scraping/web-scraper-api/targets/etsy)**,** [**Alvo**](https://developers.oxylabs.io/documentation/pt-br/solucoes-de-scraping/web-scraper-api/targets/north-american-e-commerce/target)**,** [**Outros sites**](https://developers.oxylabs.io/documentation/pt-br/solucoes-de-scraping/web-scraper-api/targets/generic-target)**.**

### Exemplo de requisição

{% tabs %}
{% tab title="cURL" %}

```bash
curl 'https://realtime.oxylabs.io/v1/queries' \
--user "USERNAME:PASSWORD" \
-H "Content-Type: application/json" \
-d '{
        "source": "amazon_product",
        "query": "B07FZ8S74R",
        "geo_location": "90210",
        "parse": true
    }'
```

{% endtab %}

{% tab title="Python" %}

```python
import requests
from pprint import pprint

# Estruturar payload.
payload = {
    'source': 'amazon_product',
    'query': 'B07FZ8S74R',
    'geo_location': '90210',
    'parse': True
}

# Obter resposta.
response = requests.request(
    'POST',
    'https://realtime.oxylabs.io/v1/queries',
    auth=('USERNAME', 'PASSWORD'),
    json=payload,
)

# Imprimir resposta formatada no stdout.
pprint(response.json())
```

{% endtab %}

{% tab title="Node.js" %}

```javascript
const https = require("https");

const username = "USERNAME";
const password = "PASSWORD";
const body = {
    source: "amazon_product",
    query: "B07FZ8S74R",
    geo_location: "90210",
    parse: true,
};

const options = {
    hostname: "realtime.oxylabs.io",
    path: "/v1/queries",
    method: "POST",
    headers: {
        "Content-Type": "application/json",
        Authorization:
            "Basic " + Buffer.from(`${username}:${password}`).toString("base64"),
    },
};

const request = https.request(options, (response) => {
    let data = "";

    response.on("data", (chunk) => {
        data += chunk;
    });

    response.on("end", () => {
        const responseData = JSON.parse(data);
        console.log(JSON.stringify(responseData, null, 2));
    });
});

request.on("error", (error) => {
    console.error("Error:", error);
});

request.write(JSON.stringify(body));
request.end();
```

{% endtab %}

{% tab title="PHP" %}

```php
<?php

$params = array(
    'source' => 'amazon_product',
    'query' => 'B07FZ8S74R',
    'geo_location' => '90210',
    'parse' => true,
);

$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, "https://realtime.oxylabs.io/v1/queries");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($params));
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_USERPWD, "USERNAME" . ":" . "PASSWORD");

$headers = array();
$headers[] = "Content-Type: application/json";
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);

$result = curl_exec($ch);
echo $result;

if (curl_errno($ch)) {
    echo 'Error:' . curl_error($ch);
}
curl_close($ch);
?>
```

{% endtab %}

{% tab title="C#" %}

```csharp
using System;
using System.Net.Http;
using System.Net.Http.Json;
using System.Threading.Tasks;

namespace OxyApi
{
    class Program
    {
        static async Task Main()
        {
            const string Username = "USERNAME";
            const string Password = "PASSWORD";

            var parameters = new {
                source = "amazon_product",
                query = "B07FZ8S74R",
                geo_location = "90210",
                parse = true
            };

            var client = new HttpClient();

            Uri baseUri = new Uri("https://realtime.oxylabs.io");
            client.BaseAddress = baseUri;

            var requestMessage = new HttpRequestMessage(HttpMethod.Post, "/v1/queries");
            requestMessage.Content = JsonContent.Create(parameters);

            var authenticationString = $"{Username}:{Password}";
            var base64EncodedAuthenticationString = Convert.ToBase64String(System.Text.Encoding.ASCII.GetBytes(authenticationString));
            requestMessage.Headers.Add("Authorization", "Basic " + base64EncodedAuthenticationString);

            var response = await client.SendAsync(requestMessage);
            var contents = await response.Content.ReadAsStringAsync();

            Console.WriteLine(contents);
        }
    }
}
```

{% endtab %}

{% tab title="Golang" %}

```go
package main

import (
	"bytes"
	"encoding/json"
	"fmt"
	"io/ioutil"
	"net/http"
)

func main() {
	const Username = "USERNAME"
	const Password = "PASSWORD"

	payload := map[string]interface{}{
		"source":       "amazon_product",
		"query":        "B07FZ8S74R",
		"geo_location": "90210",
		"parse":        true,
	}

	jsonValue, _ := json.Marshal(payload)

	client := &http.Client{}
	request, _ := http.NewRequest("POST",
		"https://realtime.oxylabs.io/v1/queries",
		bytes.NewBuffer(jsonValue),
	)

	request.SetBasicAuth(Username, Password)
	request.Header.Set("Content-Type", "application/json")
	response, _ := client.Do(request)

	responseText, _ := ioutil.ReadAll(response.Body)
	fmt.Println(string(responseText))
}
```

{% endtab %}

{% tab title="HTTP" %}

```http
https://realtime.oxylabs.io/v1/queries?source=amazon_product&query=B07FZ8S74R&geo_location=90210&parse=true&access_token=12345abcde
```

{% endtab %}

{% tab title="Java" %}

```java
package org.example;

import okhttp3.*;
import org.json.JSONObject;
import java.util.concurrent.TimeUnit;

public class Main implements Runnable {
    private static final String AUTHORIZATION_HEADER = "Authorization";
    public static final String USERNAME = "USERNAME";
    public static final String PASSWORD = "PASSWORD";

    public void run() {
        JSONObject jsonObject = new JSONObject();
        jsonObject.put("source", "amazon_product");
        jsonObject.put("query", "B07FZ8S74R");
        jsonObject.put("geo_location", "90210");
        jsonObject.put("parse", true);

        Authenticator authenticator = (route, response) -> {
            String credential = Credentials.basic(USERNAME, PASSWORD);
            return response
                    .request()
                    .newBuilder()
                    .header(AUTHORIZATION_HEADER, credential)
                    .build();
        };

        var client = new OkHttpClient.Builder()
                .authenticator(authenticator)
                .readTimeout(180, TimeUnit.SECONDS)
                .build();

        var mediaType = MediaType.parse("application/json; charset=utf-8");
        var body = RequestBody.create(jsonObject.toString(), mediaType);
        var request = new Request.Builder()
                .url("https://realtime.oxylabs.io/v1/queries")
                .post(body)
                .build();

        try (var response = client.newCall(request).execute()) {
            if (response.body() != null) {
                try (var responseBody = response.body()) {
                    System.out.println(responseBody.string());
                }
            }
        } catch (Exception exception) {
            System.out.println("Error: " + exception.getMessage());
        }

        System.exit(0);
    }

    public static void main(String[] args) {
        new Thread(new Main()).start();
    }
}
```

{% endtab %}

{% tab title="JSON" %}

```json
{
    "source": "amazon_product",
    "query": "B07FZ8S74R",
    "geo_location": "90210",
    "parse": true
}
```

{% endtab %}
{% endtabs %}

Usamos o método de integração [**Realtime**](https://developers.oxylabs.io/documentation/pt-br/solucoes-de-scraping/web-scraper-api/integration-methods/realtime) síncrona em nossos exemplos. Se você quiser usar [**Proxy Endpoint**](https://developers.oxylabs.io/documentation/pt-br/solucoes-de-scraping/web-scraper-api/integration-methods/proxy-endpoint) ou integração assíncrona [**Push-Pull**](https://developers.oxylabs.io/documentation/pt-br/solucoes-de-scraping/web-scraper-api/integration-methods/push-pull) consulte os [**métodos de integração**](https://developers.oxylabs.io/documentation/pt-br/solucoes-de-scraping/web-scraper-api/integration-methods) na seção.

### Formando uma requisição

1. Escolha seu método de integração: síncrono ([**Realtime**](https://developers.oxylabs.io/documentation/pt-br/solucoes-de-scraping/web-scraper-api/integration-methods/realtime), [**Proxy Endpoint**](https://developers.oxylabs.io/documentation/pt-br/solucoes-de-scraping/web-scraper-api/integration-methods/proxy-endpoint)) ou assíncrono  ([**Push-Pull**](https://developers.oxylabs.io/documentation/pt-br/solucoes-de-scraping/web-scraper-api/integration-methods/push-pull)).
2. Ao formar uma requisição, inclua os seguintes elementos:

{% tabs %}
{% tab title="Realtime" %}

1. **Endpoint:**

```
POST https://realtime.oxylabs.io/v1/queries
```

2. **Nome de usuário e senha** ([**Autenticação HTTP**](https://developer.mozilla.org/en-US/docs/Web/HTTP/Authentication))**.** Crie credenciais de usuário API durante seu [**cadastro de avaliação ou compra do produto**](https://dashboard.oxylabs.io/en/registration?productToBuy=SCRAPI_SERP)**.**

```
USERNAME:PASSWORD
```

{% hint style="warning" %}
Se você precisar de mais de um usuário de API para sua conta, por favor contate nosso [**suporte ao cliente**](mailto:support@oxylabs.io) ou envie uma mensagem ao nosso suporte via chat ao vivo 24/7.
{% endhint %}

3. **Content-type**. Ao enviar jobs, sempre adicione este cabeçalho:

```
Content-Type: application/json
```

4. **Payload:**
   1. `source` - Este parâmetro define o scraper que será usado para processar sua requisição.
   2. `URL` ou `query` - Forneça o `URL` ou `query` para o tipo de página que você quer rastrear. Consulte a tabela abaixo e as sub-páginas alvo correspondentes para orientações detalhadas sobre quando usar cada parâmetro.
   3. [**Parâmetros adicionais**](https://developers.oxylabs.io/documentation/pt-br/solucoes-de-scraping/web-scraper-api/features): Opcionalmente, você pode incluir parâmetros adicionais como `geo_location`, `user_agent_type`, `parse`, `render` e mais para personalizar sua requisição de scraping.

```json
{
    "source": "amazon_product",
    "query": "B07FZ8S74R",
    "geo_location": "90210",
    "parse": true
}
```

{% endtab %}

{% tab title="Proxy Endpoint" %}

1. **Endpoint:**

```
GET realtime.oxylabs.io:60000
```

2. **Ignorar certificados.** Em `cURL`, é `-k` ou `--insecure`.
3. **Nome de usuário e senha** ([**Autenticação HTTP**](https://developer.mozilla.org/en-US/docs/Web/HTTP/Authentication))**.** Crie credenciais de usuário API durante seu [**cadastro de avaliação ou compra do produto**](https://dashboard.oxylabs.io/en/registration?productToBuy=SCRAPI_SERP)**.**

```
USERNAME:PASSWORD
```

{% hint style="warning" %}
Se você precisar de mais de um usuário de API para sua conta, por favor contate nosso [**suporte ao cliente**](mailto:support@oxylabs.io) ou envie uma mensagem ao nosso suporte via chat ao vivo 24/7.
{% endhint %}

4. **Payload:**
   1. `URL` - Forneça o `URL` para a página que você quer rastrear.
   2. [**Parâmetros adicionais**](https://developers.oxylabs.io/documentation/pt-br/solucoes-de-scraping/web-scraper-api/features): Opcionalmente, você pode incluir parâmetros adicionais como `geo_location`, `user_agent_type`, `parse`, e envie-os como cabeçalhos.

```bash
curl -k -x realtime.oxylabs.io:60000 \
-U "USERNAME:PASSWORD" \
'https://www.amazon.com/dp/b07fz8s74r' \
-H "x-oxylabs-geo-location: 90210" \
-H "x-oxylabs-parse: 1"
```

{% endtab %}

{% tab title="Push-Pull" %}

1. **Endpoint:**

```
POST https://data.oxylabs.io/v1/queries
```

2. **Nome de usuário e senha** ([**Autenticação HTTP**](https://developer.mozilla.org/en-US/docs/Web/HTTP/Authentication))**.** Crie credenciais de usuário API durante seu [**cadastro de avaliação ou compra do produto**](https://dashboard.oxylabs.io/en/registration?productToBuy=SCRAPI_SERP)**.**

```
USERNAME:PASSWORD
```

{% hint style="warning" %}
Se você precisar de mais de um usuário de API para sua conta, por favor contate nosso [**suporte ao cliente**](mailto:support@oxylabs.io) ou envie uma mensagem ao nosso suporte via chat ao vivo 24/7.
{% endhint %}

3. **Content-type**. Ao enviar jobs, sempre adicione este cabeçalho:

```
Content-Type: application/json
```

4. **Payload:**
   1. `source` - Este parâmetro define o scraper que será usado para processar sua requisição.
   2. `URL` ou `query` - Forneça o `URL` ou `query` para o tipo de página que você quer rastrear. Consulte a tabela abaixo e as sub-páginas alvo correspondentes para orientações detalhadas sobre quando usar cada parâmetro.
   3. [**Parâmetros adicionais**](https://developers.oxylabs.io/documentation/pt-br/solucoes-de-scraping/web-scraper-api/features): Opcionalmente, você pode incluir parâmetros adicionais como `geo_location`, `user_agent_type`, `parse`, e mais para personalizar sua requisição de scraping.

```json
{
    "source": "amazon_product",
    "query": "B07FZ8S74R",
    "geo_location": "90210",
    "parse": true
}
```

5. Ao enviar uma requisição, você receberá prontamente uma resposta JSON contendo todos os detalhes do job, incluindo parâmetros do job, ID do job e URLs para download dos resultados do job:

```
GET https://data.oxylabs.io/v1/queries/{job_id}/results
```

```
GET https://data.oxylabs.io/v1/queries/{job_id}/results?type=raw
```

```
GET https://data.oxylabs.io/v1/queries/{job_id}/results?type=parsed
```

```
GET https://data.oxylabs.io/v1/queries/{job_id}/results?type=pn
```

{% endtab %}
{% endtabs %}

<table><thead><tr><th width="217">Alvo</th><th width="246">Fonte (URL de scraping)</th><th>Fonte (Usando Query)</th></tr></thead><tbody><tr><td><a href="../solucoes-de-scraping/web-scraper-api/targets/amazon"><strong>Amazon</strong></a></td><td><code>amazon</code></td><td><p><code>amazon_product,</code></p><p><code>amazon_search</code>,</p><p><code>amazon_pricing</code>,</p><p><code>amazon_sellers,</code></p><p><code>amazon_bestsellers,</code></p><p><code>amazon_questions</code></p></td></tr><tr><td><a href="../solucoes-de-scraping/web-scraper-api/targets/google"><strong>Google Shopping</strong></a></td><td><code>google</code></td><td><p><code>google_shopping_product</code>,</p><p><code>google_shopping_search</code>,</p><p><code>google_shopping_pricing</code></p></td></tr><tr><td><a href="../solucoes-de-scraping/web-scraper-api/targets/walmart"><strong>Walmart</strong></a><br><a href="../solucoes-de-scraping/web-scraper-api/targets/north-american-e-commerce/bestbuy"><strong>Best Buy</strong></a><br><a href="../solucoes-de-scraping/web-scraper-api/targets/etsy"><strong>Etsy</strong></a><br><a href="../solucoes-de-scraping/web-scraper-api/targets/north-american-e-commerce/target"><strong>Alvo</strong></a><br><a href="../solucoes-de-scraping/web-scraper-api/targets/generic-target"><strong>Outros sites</strong></a></td><td><code>universal</code></td><td>Usar o <code>query</code> parâmetro não é suportado</td></tr></tbody></table>

## Outros sites

### Primeiros passos

Rastreie qualquer URL com nossa `universal` source. Você também pode adicionar [**parâmetros adicionais**](https://developers.oxylabs.io/documentation/pt-br/solucoes-de-scraping/web-scraper-api/features).&#x20;

### Exemplo de requisição

{% tabs %}
{% tab title="cURL" %}

```shell
curl 'https://realtime.oxylabs.io/v1/queries' \
--user 'USERNAME:PASSWORD' \
-H 'Content-Type: application/json' \
-d '{
        "source": "universal",
        "url": "https://sandbox.oxylabs.io/"
    }'
```

{% endtab %}

{% tab title="Python" %}

```python
import requests
from pprint import pprint


# Estruturar payload.
payload = {
    'source': 'universal',
    'url': 'https://sandbox.oxylabs.io/',
    # 'render': 'html', # Se o tipo de página exigir
}

# Obter resposta.
response = requests.request(
    'POST',
    'https://realtime.oxylabs.io/v1/queries',
    auth=('USERNAME', 'PASSWORD'), # Suas credenciais vão aqui
    json=payload,
)

# Em vez de resposta com status do job e URL de resultados, isto retornará o
# response JSON com os resultados.
pprint(response.json())
```

{% endtab %}

{% tab title="Node.js" %}

```javascript
const https = require("https");

const username = "USERNAME";
const password = "PASSWORD";
const body = {
    source: "universal",
    url: "https://sandbox.oxylabs.io/",
    // 'render': 'html' // Se o tipo de página exigir
};

const options = {
    hostname: "realtime.oxylabs.io",
    path: "/v1/queries",
    method: "POST",
    headers: {
        "Content-Type": "application/json",
        Authorization: "Basic " + Buffer.from(`${username}:${password}`).toString("base64"),
    },
};

const request = https.request(options, (response) => {
    let data = "";

    response.on("data", (chunk) => {
        data += chunk;
    });

    response.on("end", () => {
        const responseData = JSON.parse(data);
        console.log(JSON.stringify(responseData, null, 2));
    });
});

request.on("error", (error) => {
    console.error("Error:", error);
});

request.write(JSON.stringify(body));
request.end();
```

{% endtab %}

{% tab title="HTTP" %}

```http
# A string inteira que você enviar precisa estar codificada em URL.

https://realtime.oxylabs.io/v1/queries?source=universal&url=https%3A%2F%2Fsandbox.oxylabs.io%2F&access_token=12345abcde
```

{% endtab %}

{% tab title="PHP" %}

```php
<?php

$params = array(
    'source' => 'universal',
    'url' => 'https://sandbox.oxylabs.io/',
    // 'render' => 'html' // Se o tipo de página exigir
);

$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, "https://realtime.oxylabs.io/v1/queries");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($params));
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_USERPWD, "USERNAME" . ":" . "PASSWORD");

$headers = array();
$headers[] = "Content-Type: application/json";
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);

$result = curl_exec($ch);
echo $result;

if (curl_errno($ch)) {
    echo 'Error:' . curl_error($ch);
}
curl_close($ch);
```

{% endtab %}

{% tab title="Golang" %}

```go
package main

import (
	"bytes"
	"encoding/json"
	"fmt"
	"io/ioutil"
	"net/http"
)

func main() {
	const Username = "USERNAME"
	const Password = "PASSWORD"

	payload := map[string]interface{}{
		"source": "universal",
		"url":    "https://sandbox.oxylabs.io/",
		// "render": "html" // Se o tipo de página exigir
	}

	jsonValue, _ := json.Marshal(payload)

	client := &http.Client{}
	request, _ := http.NewRequest("POST",
		"https://realtime.oxylabs.io/v1/queries",
		bytes.NewBuffer(jsonValue),
	)

	request.SetBasicAuth(Username, Password)
	response, _ := client.Do(request)

	responseText, _ := ioutil.ReadAll(response.Body)
	fmt.Println(string(responseText))
}
```

{% endtab %}

{% tab title="C#" %}

```csharp
using System;
using System.Collections.Generic;
using System.Net.Http;
using System.Net.Http.Json;
using System.Threading.Tasks;

namespace OxyApi
{
    class Program
    {
        static async Task Main()
        {
            const string Username = "USERNAME";
            const string Password = "PASSWORD";

            var parameters = new {
                source = "universal",
                url = "https://sandbox.oxylabs.io/",
                // render = "html", // Se o tipo de página exigir
            };

            var client = new HttpClient();

            Uri baseUri = new Uri("https://realtime.oxylabs.io");
            client.BaseAddress = baseUri;

            var requestMessage = new HttpRequestMessage(HttpMethod.Post, "/v1/queries");
            requestMessage.Content = JsonContent.Create(parameters);

            var authenticationString = $"{Username}:{Password}";
            var base64EncodedAuthenticationString = Convert.ToBase64String(System.Text.ASCIIEncoding.UTF8.GetBytes(authenticationString));
            requestMessage.Headers.Add("Authorization", "Basic " + base64EncodedAuthenticationString);

            var response = await client.SendAsync(requestMessage);
            var contents = await response.Content.ReadAsStringAsync();

            Console.WriteLine(contents);
        }
    }
}
```

{% endtab %}

{% tab title="Java" %}

```java
package org.example;

import okhttp3.*;
import org.json.JSONObject;
import java.util.concurrent.TimeUnit;

public class Main implements Runnable {
    private static final String AUTHORIZATION_HEADER = "Authorization";
    public static final String USERNAME = "USERNAME";
    public static final String PASSWORD = "PASSWORD";

    public void run() {
        JSONObject jsonObject = new JSONObject();
        jsonObject.put("source", "universal");
        jsonObject.put("url", "https://sandbox.oxylabs.io/");

        Authenticator authenticator = (route, response) -> {
            String credential = Credentials.basic(USERNAME, PASSWORD);
            return response
                    .request()
                    .newBuilder()
                    .header(AUTHORIZATION_HEADER, credential)
                    .build();
        };

        var client = new OkHttpClient.Builder()
                .authenticator(authenticator)
                .readTimeout(180, TimeUnit.SECONDS)
                .build();

        var mediaType = MediaType.parse("application/json; charset=utf-8");
        var body = RequestBody.create(jsonObject.toString(), mediaType);
        var request = new Request.Builder()
                .url("https://realtime.oxylabs.io/v1/queries")
                .post(body)
                .build();

        try (var response = client.newCall(request).execute()) {
            if (response.body() != null) {
                try (var responseBody = response.body()) {
                    System.out.println(responseBody.string());
                }
            }
        } catch (Exception exception) {
            System.out.println("Error: " + exception.getMessage());
        }

        System.exit(0);
    }

    public static void main(String[] args) {
        new Thread(new Main()).start();
    }
}
```

{% endtab %}

{% tab title="JSON" %}

```json
{
    "source": "universal", 
    "url": "https://sandbox.oxylabs.io/"
}
```

{% endtab %}
{% endtabs %}

Usamos o método de integração [**Realtime**](https://developers.oxylabs.io/documentation/pt-br/solucoes-de-scraping/web-scraper-api/integration-methods/realtime) síncrona em nossos exemplos. Se você quiser usar [**Proxy Endpoint**](https://developers.oxylabs.io/documentation/pt-br/solucoes-de-scraping/web-scraper-api/integration-methods/proxy-endpoint) ou integração assíncrona [**Push-Pull**](https://developers.oxylabs.io/documentation/pt-br/solucoes-de-scraping/web-scraper-api/integration-methods/push-pull) consulte os [**métodos de integração**](https://developers.oxylabs.io/documentation/pt-br/solucoes-de-scraping/web-scraper-api/integration-methods) na seção.

### Formando uma requisição

1. Escolha seu método de integração: síncrono ([**Realtime**](https://developers.oxylabs.io/documentation/pt-br/solucoes-de-scraping/web-scraper-api/integration-methods/realtime), [**Proxy Endpoint**](https://developers.oxylabs.io/documentation/pt-br/solucoes-de-scraping/web-scraper-api/integration-methods/proxy-endpoint)) ou assíncrono  ([**Push-Pull**](https://developers.oxylabs.io/documentation/pt-br/solucoes-de-scraping/web-scraper-api/integration-methods/push-pull)).
2. Ao formar uma requisição, inclua os seguintes elementos:

{% tabs %}
{% tab title="Realtime" %}

1. **Endpoint:**

```
POST https://realtime.oxylabs.io/v1/queries
```

2. **Nome de usuário e senha** ([**Autenticação HTTP**](https://developer.mozilla.org/en-US/docs/Web/HTTP/Authentication))**.** Crie credenciais de usuário API durante seu [**cadastro de avaliação ou compra do produto**](https://dashboard.oxylabs.io/en/registration?productToBuy=SCRAPI_SERP)**.**

```
USERNAME:PASSWORD
```

{% hint style="warning" %}
Se você precisar de mais de um usuário de API para sua conta, por favor contate nosso [**suporte ao cliente**](mailto:support@oxylabs.io) ou envie uma mensagem ao nosso suporte via chat ao vivo 24/7.
{% endhint %}

3. **Content-type**. Ao enviar jobs, sempre adicione este cabeçalho:

```
Content-Type: application/json
```

4. **Payload**.

   1. `source` - Este parâmetro define o scraper que será usado para processar sua requisição.
   2. `URL` - Forneça o `URL` do alvo que você quer rastrear, por exemplo:
      1. **Imobiliário**: Idealista, Redfin, Zillow, Zoopla
      2. **Viagens**: Airbnb, Agoda, Booking, TripAdvisor
      3. **Automotivo**: Crunchbase, ZoomInfo, AngelList, Product Hunt
      4. **Dados de empresas**: Netflix, SoundCloud, YouTube, IMDb
      5. **Entretenimento**: AutoEurope, Autotrader, RockAuto, Halfords
      6. **Qualquer outro**.
   3. [**Parâmetros adicionais**](https://developers.oxylabs.io/documentation/pt-br/solucoes-de-scraping/web-scraper-api/features): Opcionalmente, você pode incluir parâmetros adicionais como `geo_location`, `user_agent_type`, e mais para personalizar sua requisição de scraping.

   <pre class="language-json" data-overflow="wrap"><code class="lang-json">{
       "source": "universal",
       "url": "https://www.zillow.com/homedetails/10066-Cielo-Dr-Beverly-Hills-CA-90210/243990393_zpid/"
   }
   </code></pre>

{% endtab %}

{% tab title="Proxy Endpoint" %}

1. **Endpoint:**

```
GET realtime.oxylabs.io:60000
```

2. **Ignorar certificados.** Em `cURL`, é `-k` ou `--insecure`.
3. **Nome de usuário e senha** ([**Autenticação HTTP**](https://developer.mozilla.org/en-US/docs/Web/HTTP/Authentication))**.** Crie credenciais de usuário API durante seu [**cadastro de avaliação ou compra do produto**](https://dashboard.oxylabs.io/en/registration?productToBuy=SCRAPI_SERP)**.**

```
USERNAME:PASSWORD
```

{% hint style="warning" %}
Se você precisar de mais de um usuário de API para sua conta, por favor contate nosso [**suporte ao cliente**](mailto:support@oxylabs.io) ou envie uma mensagem ao nosso suporte via chat ao vivo 24/7.
{% endhint %}

4. **Payload:**
   1. `URL` - Forneça o `URL` para a página que você quer rastrear, por exemplo:
      1. **Imobiliário**: Idealista, Redfin, Zillow, Zoopla
      2. **Viagens**: Airbnb, Agoda, Booking, TripAdvisor
      3. **Automotivo**: Crunchbase, ZoomInfo, AngelList, Product Hunt
      4. **Dados de empresas**: Netflix, SoundCloud, YouTube, IMDb
      5. **Entretenimento**: AutoEurope, Autotrader, RockAuto, Halfords
      6. **Qualquer outro**.
   2. [**Parâmetros adicionais**](https://developers.oxylabs.io/documentation/pt-br/solucoes-de-scraping/web-scraper-api/features): Opcionalmente, você pode incluir parâmetros adicionais como `geo_location`, `user_agent_type`, e envie-os como cabeçalhos.

{% code overflow="wrap" %}

```bash
curl -k -x realtime.oxylabs.io:60000 \
-U "USERNAME:PASSWORD" \
'https://www.zillow.com/homedetails/10066-Cielo-Dr-Beverly-Hills-CA-90210/243990393_zpid/' 
```

{% endcode %}
{% endtab %}

{% tab title="Push-Pull" %}

1. **Endpoint:**

```
POST https://data.oxylabs.io/v1/queries
```

2. **Nome de usuário e senha** ([**Autenticação HTTP**](https://developer.mozilla.org/en-US/docs/Web/HTTP/Authentication))**.** Crie credenciais de usuário API durante seu [**cadastro de avaliação ou compra do produto**](https://dashboard.oxylabs.io/en/registration?productToBuy=SCRAPI_SERP)**.**

```
USERNAME:PASSWORD
```

{% hint style="warning" %}
Se você precisar de mais de um usuário de API para sua conta, por favor contate nosso [**suporte ao cliente**](mailto:support@oxylabs.io) ou envie uma mensagem ao nosso suporte via chat ao vivo 24/7.
{% endhint %}

3. **Content-type**. Ao enviar jobs, sempre adicione este cabeçalho:

```
Content-Type: application/json
```

4. **Payload**.

   1. `source` - Este parâmetro define o scraper que será usado para processar sua requisição.
   2. `URL` - Forneça o `URL` do alvo que você quer rastrear, por exemplo:
      1. **Imobiliário**: Idealista, Redfin, Zillow, Zoopla
      2. **Viagens**: Airbnb, Agoda, Booking, TripAdvisor
      3. **Automotivo**: Crunchbase, ZoomInfo, AngelList, Product Hunt
      4. **Dados de empresas**: Netflix, SoundCloud, YouTube, IMDb
      5. **Entretenimento**: AutoEurope, Autotrader, RockAuto, Halfords
      6. **Qualquer outro**.
   3. [**Parâmetros adicionais**](https://developers.oxylabs.io/documentation/pt-br/solucoes-de-scraping/web-scraper-api/features): Opcionalmente, você pode incluir parâmetros adicionais como `geo_location`, `user_agent_type`, e mais para personalizar sua requisição de scraping.

   <pre class="language-json" data-overflow="wrap"><code class="lang-json">{
       "source": "universal",
       "url": "https://www.zillow.com/homedetails/10066-Cielo-Dr-Beverly-Hills-CA-90210/243990393_zpid/"
   }
   </code></pre>
5. Ao enviar uma requisição, você receberá prontamente uma resposta JSON contendo todos os detalhes do job, incluindo parâmetros do job, ID do job e URLs para download dos resultados do job:

```
GET https://data.oxylabs.io/v1/queries/{job_id}/results
```

```
GET https://data.oxylabs.io/v1/queries/{job_id}/results?type=raw
```

```
GET https://data.oxylabs.io/v1/queries/{job_id}/results?type=parsed
```

```
GET https://data.oxylabs.io/v1/queries/{job_id}/results?type=pn
```

{% endtab %}
{% endtabs %}

{% hint style="info" %}
Se você precisar de assistência para fazer sua primeira requisição, sinta-se à vontade para nos contatar via chat ao vivo disponível 24/7.
{% endhint %}

{% hint style="info" %}
*Todas as informações aqui são fornecidas "tal como" e apenas para fins informativos. Não fazemos nenhuma declaração e isentamos toda responsabilidade com relação ao seu uso de qualquer informação contida nesta página. Antes de se envolver em atividades de scraping de qualquer tipo, você deve consultar seus conselheiros jurídicos e ler cuidadosamente os termos de serviço do site específico ou obter uma licença de scraping.*
{% endhint %}
