# Amazon

Com o Web Scraper API, você pode raspar e analisar vários tipos de **Amazon** páginas; abaixo está uma visão geral de todos os scrapers suportados e seus respectivos `source` valores.

| Source               | Descrição                                                                                                                                                                                    | Parser dedicado                                                                                                                                                                                                   |
| -------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `amazon_product`     | [**Página do produto**](https://developers.oxylabs.io/documentation/pt-br/solucoes-de-scraping/web-scraper-api/targets/amazon/product) de um ASIN de sua escolha.                            | Sim.                                                                                                                                                                                                              |
| `amazon_search`      | [**Resultados de busca**](https://developers.oxylabs.io/documentation/pt-br/solucoes-de-scraping/web-scraper-api/targets/amazon/search) para um termo de pesquisa da sua escolha.            | Sim.                                                                                                                                                                                                              |
| `amazon_pricing`     | [**Lista de ofertas**](https://developers.oxylabs.io/documentation/pt-br/solucoes-de-scraping/web-scraper-api/targets/amazon/pricing) disponíveis para um ASIN de sua escolha.               | Sim.                                                                                                                                                                                                              |
| `amazon_sellers`     | [**Informações do vendedor**](https://developers.oxylabs.io/documentation/pt-br/solucoes-de-scraping/web-scraper-api/targets/amazon/sellers) de um vendedor de sua escolha.                  | Sim.                                                                                                                                                                                                              |
| `amazon_bestsellers` | Lista de [**itens mais vendidos**](https://developers.oxylabs.io/documentation/pt-br/solucoes-de-scraping/web-scraper-api/targets/amazon/best-sellers) em um nó de taxonomia de sua escolha. | Sim                                                                                                                                                                                                               |
| `amazon`             | Enviar qualquer [**URL da Amazon**](https://developers.oxylabs.io/documentation/pt-br/solucoes-de-scraping/web-scraper-api/targets/amazon/url) que você quiser.                              | Limitado a URLs de tipos específicos [**de páginas da Amazon**](https://developers.oxylabs.io/documentation/pt-br/solucoes-de-scraping/web-scraper-api/features/result-processing-and-storage/dedicated-parsers). |

## Primeiros passos

**Crie suas credenciais de usuário da API**: Inscreva-se para um teste gratuito ou adquira o produto no [**Oxylabs dashboard**](https://dashboard.oxylabs.io/en/registration) para criar suas credenciais de usuário da API (`USERNAME` e `PASSWORD`).

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

### Solicitar exemplo

{% 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 a 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 %}

<details>

<summary>Exemplo de saída</summary>

```json
{
    "results": [
        {
            "content": {
                "ads": [
                    {
                        "pos": 1,
                        "asin": "B07KRY43KN",
                        "type": "organic_also_viewed",
                        "price": 29.99,
                        "title": "Echo Glow - Lâmpada inteligente multicolorida, Funciona com Alexa",
                        "images": [
                            "https://images-na.ssl-images-amazon.com/images/I/61kaGoho9HL._AC_UL160_SR160,160_.jpg"
                        ],
                        "rating": 4.5,
                        "location": "carousel",
                        "price_upper": 29.99,
                        "reviews_count": 48742,
                        "is_prime_eligible": false
                    },
                    {...}
                ],
                "url": "https://www.amazon.com/dp/B07FZ8S74R",
                "asin": "B07FZ8S74R",
                "page": 1,
                "brand": "Amazon",
                "price": 0,
                "stock": "Atualmente indisponível. Não sabemos quando ou se este item voltará ao estoque.",
                "title": "Echo Dot (3ª Geração, lançamento de 2018) - Caixa de som inteligente com Alexa - Carvão",
                "coupon": "",
                "images": [
                    "https://m.media-amazon.com/images/I/61MZfowYoaL._AC_SL1000_.jpg",
                    "..."
                ],
                "rating": 4.7,
                "category": [],
                "currency": "USD",
                "delivery": [],
                "page_type": "Product",
                "price_sns": 0,
                "variation": [],
                "has_videos": false,
                "sales_rank": [],
                "top_review": "Recentemente adicionei o Echo Dot (3ª Geração, lançamento de 2018) à minha configuração de casa inteligente e estou totalmente impressionado com seu desempenho e capacidades. Este alto-falante inteligente compacto tem muita funcionalidade e conveniência. A configuração foi muito simples \u2013 em minutos eu já tinha a Alexa funcionando, pronta para ajudar. O reconhecimento de voz é notavelmente preciso, e as respostas da Alexa são rápidas e úteis. Seja para checar o tempo, definir temporizadores ou tocar minhas músicas favoritas, o Echo Dot se integra facilmente à minha rotina diária. A qualidade do som é surpreendentemente robusta para um dispositivo tão compacto. A clareza e profundidade do áudio são impressionantes, tornando-o perfeito para streaming de música ou mesmo para servir como um alto-falante secundário em um sistema de som maior. Aprecio o design elegante e discreto do Echo Dot, que se mescla perfeitamente à decoração de qualquer ambiente. A cor Carvão adiciona um toque de elegância, tornando-o uma adição visualmente agradável ao meu espaço. Uma das características de destaque é o controle da casa inteligente. O Echo Dot conecta-se facilmente a vários dispositivos inteligentes, permitindo-me controlar luzes, termostatos e mais com simples comandos de voz. Isso realmente melhora a conveniência geral da minha configuração de casa inteligente. Em conclusão, o Echo Dot (3ª Geração, lançamento de 2018) provou ser uma adição inestimável à minha casa. Sua combinação de precisão no reconhecimento de voz, qualidade de som impressionante e integração perfeita com a casa inteligente fazem dele um produto de destaque no mercado de alto-falantes inteligentes. Se você está procurando um alto-falante inteligente confiável e repleto de recursos, o Echo Dot é uma excelente escolha \u2013 altamente recomendado!\n  \nLer mais",
                "asin_in_url": "B07FZ8S74R",
                "description": "",
                "parent_asin": "B07H65KP63",
                "price_upper": 0,
                "pricing_str": "",
                "pricing_url": "https://www.amazon.com/gp/offer-listing/B07FZ8S74R?startIndex=0",
                "manufacturer": "Amazon",
                "price_buybox": -1,
                "product_name": "Echo Dot (3ª Geração, lançamento de 2018) - Caixa de som inteligente com Alexa - Carvão",
                "bullet_points": "CONHEÇA O ECHO DOT - Nosso alto-falante inteligente mais compacto que se encaixa perfeitamente em espaços pequenos.\nSOM RICO E ALTO - Qualidade de áudio melhor que a do Echo Dot Gen 2 para um som mais cheio e alto. Emparelhe com um segundo Echo Dot para som estéreo.\nALEXA TE AJUDA A FAZER MAIS COM O PRIME - Ouça milhões de músicas com o Amazon Music, use sua voz para frete de 2 dias, ouça audiolivros no Audible e muito mais.\nTORNE SUA VIDA MAIS FÁCIL - Alexa pode definir temporizadores, checar o tempo, ler as notícias, ajustar termostatos, responder perguntas e mais para ajudar nas tarefas diárias.\nPROJETADO PARA PROTEGER SUA PRIVACIDADE \u2013 Construído com múltiplas camadas de controles de privacidade incluindo a capacidade de excluir suas gravações, silenciar o microfone e mais controles de privacidade no app.\nCONTROLE A MÚSICA COM UMA SIMPLES FRASE - O Echo Dot permite transmitir músicas do Amazon Music, Apple Music, Spotify, SiriusXM e outros, além de via Bluetooth. O controle por voz com a Alexa facilita pular para a próxima música, ajustar o volume e pausar sem levantar.\nCONECTE-SE COM OUTRAS PESSOAS SEM USAR AS MÃOS - Ligue para amigos e família que têm o app Alexa ou um dispositivo Echo. Entre instantaneamente em outras salas ou anuncie para a casa inteira que o jantar está pronto.\nA ALEXA TEM SKILLS - Com dezenas de milhares de skills e crescendo, a Alexa está sempre ficando mais inteligente e adicionando novas skills como acompanhar fitness, jogar jogos e mais.",
                "price_initial": 0,
                "pricing_count": 1,
                "reviews_count": 985157,
                "sns_discounts": [],
                "developer_info": [],
                "price_shipping": 0,
                "featured_merchant": [],
                "is_prime_eligible": false,
                "parse_status_code": 12005,
                "answered_questions_count": 0,
                "rating_stars_distribution": [
                    {
                        "rating": 5,
                        "percentage": 82
                    },
                    {...}
                ]
            },
            "created_at": "2024-07-01 09:05:45",
            "updated_at": "2024-07-01 09:05:55",
            "page": 1,
            "url": "https://www.amazon.com/dp/B07FZ8S74R",
            "job_id": "7213467808577910785",
            "status_code": 200,
            "parser_type": ""
        }
    ]
}
```

</details>

Usamos o método de integração síncrono [**Realtime**](https://developers.oxylabs.io/documentation/pt-br/solucoes-de-scraping/web-scraper-api/integration-methods/realtime) 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) da seção.

Opcionalmente, você pode incluir parâmetros adicionais como `geo_location`, `user_agent_type`, `parse`, `render` e mais para personalizar sua solicitação de scraping. Leia mais:

{% content-ref url="../features" %}
[features](https://developers.oxylabs.io/documentation/pt-br/solucoes-de-scraping/web-scraper-api/features)
{% endcontent-ref %}
