# Vendedores

El `amazon_sellers` la fuente de datos está diseñada para recuperar páginas de Vendedores de Amazon.

{% hint style="info" %}
Explorar salida [**diccionario de datos**](#data-dictionary) para Vendedores, ofreciendo una breve descripción, captura de pantalla, fragmento de código JSON analizado y una tabla que define cada campo parseado. Navega por los detalles usando la navegación lateral derecha o desplazándote hacia abajo en la página.
{% endhint %}

## Ejemplos de solicitudes

En los ejemplos de código a continuación, hacemos una solicitud para recuperar la página del vendedor con ID `A2MUQS6AX5GGR` en `amazon.de` mercado.

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

```shell
curl 'https://realtime.oxylabs.io/v1/queries' \
--user 'USERNAME:PASSWORD' \
-H 'Content-Type: application/json' \
-d '{
        "source": "amazon_sellers", 
        "domain": "de", 
        "query": "A2MUQS6AX5GGR",
        "parse": true
    }'
```

{% endtab %}

{% tab title="Python" %}

```python
import requests
from pprint import pprint


# Estructurar la carga útil.
payload = {
    'source': 'amazon_sellers',
    'domain': 'de',
    'query': 'A2MUQS6AX5GGR',
    'parse': True
}


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

# Imprimir la respuesta formateada en stdout.
pprint(response.json())
```

{% endtab %}

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

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

const username = "USERNAME";
const password = "PASSWORD";
const body = {
    source: "amazon_sellers",
    domain: "de",
    query: "A2MUQS6AX5GGR",
    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="HTTP" %}

```http
https://realtime.oxylabs.io/v1/queries?source=amazon_sellers&domain=de&query=A2MUQS6AX5GGR&parse=true&access_token=12345abcde
```

{% endtab %}

{% tab title="PHP" %}

```php
<?php

$params = array(
    'source' => 'amazon_sellers',
    'domain' => 'de',
    'query' => 'A2MUQS6AX5GGR',
    '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="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_sellers",
		"domain": "de",
		"query":  "A2MUQS6AX5GGR",
		"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)
	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 = "amazon_sellers",
                domain = "de",
                query = "A2MUQS6AX5GGR",
                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.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", "amazon_sellers");
        jsonObject.put("domain", "de");
        jsonObject.put("query", "A2MUQS6AX5GGR");
        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_sellers", 
    "domain": "de", 
    "query": "A2MUQS6AX5GGR",
    "parse": true
}
```

{% endtab %}
{% endtabs %}

Usamos el método de integración síncrono [**Realtime**](https://developers.oxylabs.io/documentation/es/soluciones-de-scraping/web-scraper-api/integration-methods/realtime) en nuestros ejemplos. Si desea usar [**Proxy Endpoint**](https://developers.oxylabs.io/documentation/es/soluciones-de-scraping/web-scraper-api/integration-methods/proxy-endpoint) o la integración asíncrona [**Push-Pull**](https://developers.oxylabs.io/documentation/es/soluciones-de-scraping/web-scraper-api/integration-methods/push-pull) consulte los [**métodos de integración**](https://developers.oxylabs.io/documentation/es/soluciones-de-scraping/web-scraper-api/integration-methods) sección.

## Valores de parámetros de solicitud

### Genérico

Configuración básica y opciones de personalización para scrapear páginas de Vendedores de Amazon.

<table><thead><tr><th width="222">Parámetro</th><th width="350.3333333333333">Descripción</th><th>Valor Predeterminado</th></tr></thead><tbody><tr><td><mark style="background-color:green;"><strong>source</strong></mark></td><td>Establece el scraper.</td><td><code>amazon_sellers</code></td></tr><tr><td><mark style="background-color:green;"><strong>query</strong></mark></td><td>Código de ID del vendedor.</td><td>-</td></tr><tr><td><code>render</code></td><td>Habilita la renderización de JavaScript cuando se establece en <code>html</code>. <a href="../../features/js-rendering-and-browser-control/javascript-rendering"><strong>Más información</strong></a><strong>.</strong></td><td>-</td></tr><tr><td><code>parse</code></td><td>Devuelve datos analizados cuando se establece en <code>true</code>. Explorar salida <a href="#output-data-dictionary"><strong>diccionario de datos</strong></a>.</td><td><code>false</code></td></tr><tr><td><code>callback_url</code></td><td>URL de su endpoint de callback. <a href="../../../integration-methods/push-pull#callback"><strong>Más información</strong></a>.</td><td>-</td></tr><tr><td><code>user_agent_type</code></td><td>Tipo de dispositivo y navegador. La lista completa se puede encontrar <a href="../../features/http-context-and-job-management/user-agent-type"><strong>aquí</strong></a>.</td><td><code>desktop</code></td></tr></tbody></table>

&#x20;   \- parámetro obligatorio

### Localización

Adapta los resultados a ubicaciones geográficas, dominios e idiomas específicos.

| Parámetro      | Descripción                                                                                                                                                                                                                                                                           | Valor Predeterminado |
| -------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------- |
| `geo_location` | El *Entregar a* ubicación. Consulta nuestra guía sobre el uso de este parámetro [**aquí**](https://developers.oxylabs.io/documentation/es/soluciones-de-scraping/web-scraper-api/features/localization/e-commerce-localization)**.**                                                  | -                    |
| `domain`       | Localización de dominio para Amazon. La lista completa de dominios disponibles se puede encontrar [**aquí**](https://github.com/oxylabs/gitbook-public-english/blob/master/scraping-solutions/web-scraper-api/targets/amazon/broken-reference/README.md).                             | `com`                |
| `locale`       | `Valor del encabezado Accept-Language, que establece el idioma de la interfaz de la página de Amazon.` IMPORTANTE: [**Más información**](https://github.com/oxylabs/gitbook-public-english/blob/master/scraping-solutions/web-scraper-api/targets/amazon/broken-reference/README.md). | -                    |

{% hint style="warning" %}
**En la mayoría de los tipos de página, Amazon adapta los resultados devueltos según la ubicación de entrega de sus clientes. Por lo tanto, recomendamos usar el** parámetro para establecer tu ubicación de entrega preferida. Puedes leer más sobre el uso de `geo_location` con Amazon `geo_location` Paginación [**aquí**](https://github.com/oxylabs/gitbook-public-english/blob/master/scraping-solutions/web-scraper-api/targets/amazon/broken-reference/README.md).
{% endhint %}

## Datos estructurados

A continuación puedes encontrar un **ejemplo de salida estructurada** para `amazon_sellers`. Ten en cuenta que ahora mismo solo admitimos salida parseada para `desktop` tipo de dispositivo. Sin embargo, no parece haber razón para obtener páginas de vendedores con otro tipo de dispositivo, ya que los datos del vendedor serán exactamente los mismos en todos los dispositivos.

<details>

<summary><code>Amazon_sellers</code> <strong>"results": [</strong></summary>

```json
{
    "results": [
        {
            "content": {
                "url": "https://www.amazon.com/sp?seller=A151FB8X73UXPJ",
                "query": "A151FB8X73UXPJ",
                "rating": 4.5,
                "page_type": "Seller",
                "description": "¡Servicio con una sonrisa! Gamer Girlz LLC ama hacer felices a nuestros clientes proporcionando el servicio más rápido y productos de la más alta calidad. Cada pedido se empaqueta con cuidado e incluye un especial GRACIAS por elegir a Gamer Girlz para brindarte la experiencia de compra de primera clase que te mereces!",
                "business_name": "Gamer Girlz",
                "recent_feedback": [
                    {
                        "feedback": "El producto nunca llegó, y fue muy muy caro. Por alguna razón no era elegible para reembolso.",
                        "rated_by": "Por Juli el 8 de mayo de 2022.",
                        "rating_stars": 1
                    },
                    {
                        "feedback": "Juego favorito",
                        "rated_by": "Por DF el 8 de mayo de 2022.",
                        "rating_stars": 5
                    },
                    {
                        "feedback": "Funciona perfectamente y me encantan los juegos que tiene.",
                        "rated_by": "Por John el 8 de mayo de 2022.",
                        "rating_stars": 5
                    },
                    {
                        "feedback": "Todos los juegos que recibí llegaron súper rápido y en condición increíble! Definitivamente volvería a comprarles y recomendaría al vendedor a otros!",
                        "rated_by": "Por Brianna c. el 6 de mayo de 2022.",
                        "rating_stars": 5
                    },
                    {
                        "feedback": "Fueron rápidos en el envío y ofrecieron mercancía de calidad. Se incluyó una etiqueta de autenticidad con el juego que compré para asegurarme que compré una versión genuina.",
                        "rated_by": "Por anónimo el 6 de mayo de 2022.",
                        "rating_stars": 5
                    }
                ],
                "business_address": "1020 Michigan St. Sandpoint ID 83864 US",
                "parse_status_code": 12000,
                "feedback_summary_table": {
                    "counts": {
                        "30_days": 44,
                        "90_days": 146,
                        "all_time": 7857,
                        "12_months": 611
                    },
                    "neutral": {
                        "30_days": "5%",
                        "90_days": "2%",
                        "all_time": "2%",
                        "12_months": "1%"
                    },
                    "negative": {
                        "30_days": "7%",
                        "90_days": "7%",
                        "all_time": "3%",
                        "12_months": "8%"
                    },
                    "positive": {
                        "30_days": "89%",
                        "90_days": "91%",
                        "all_time": "95%",
                        "12_months": "91%"
                    }
                }
            },
            "created_at": "2022-05-09 06:57:47",
            "updated_at": "2022-05-09 06:57:50",
            "page": 1,
            "url": "https://www.amazon.com/sp?seller=A151FB8X73UXPJ",
            "job_id": "6929323518437886977",
            "status_code": 200,
            Diccionario de datos de salida
        }
    ]
}
```

</details>

## Diccionario de datos de salida

#### Ejemplo HTML

<figure><img src="https://lh7-us.googleusercontent.com/Inq5Q93noPtfnzwbFnF09dP4mvi6G5D98J3gdVGDwULkj1oVYEFRggMr3ZuR7t9XrpBuG5fZoH3DGSQN4CK8X_IRems3mxSehKzzdSukHjux_3H35RljbZABkGSjJ2meVB2llVJn-Q3KY3iozLuEB0o" alt=""><figcaption></figcaption></figure>

#### Estructura JSON

El `amazon_sellers` la salida estructurada incluye campos como `URL`, `query`, `rating`, y otros. La tabla a continuación presenta una lista detallada de cada campo que parseamos, junto con su descripción y tipo de dato. La tabla también incluye algunos metadatos.

<table><thead><tr><th width="262">Clave</th><th width="341">Descripción</th><th>Tipo</th></tr></thead><tbody><tr><td><code>url</code></td><td>La URL de la página del vendedor en Amazon.</td><td>string</td></tr><tr><td><code>query</code></td><td>Un ID de vendedor de 13 caracteres usado como término de búsqueda original.</td><td>string</td></tr><tr><td><code>rating</code></td><td>La calificación del vendedor.</td><td>integer</td></tr><tr><td><code>page_type</code></td><td>El tipo de página de Amazon.</td><td>string</td></tr><tr><td><code>description</code></td><td>Una breve descripción sobre el vendedor.</td><td>string</td></tr><tr><td><code>seller_name</code></td><td>El nombre del vendedor.</td><td>string</td></tr><tr><td><code>business_name</code></td><td>El nombre del negocio.</td><td>string</td></tr><tr><td><code>recent_feedback</code></td><td>Una lista de las opiniones más recientes con sus respectivos detalles.</td><td>array</td></tr><tr><td><code>business_address</code></td><td>La dirección del negocio.</td><td>string</td></tr><tr><td><code>parse_status_code</code></td><td>El código de estado del trabajo de análisis. Puede ver los códigos de estado del parser descritos <a href="https://github.com/oxylabs/gitbook-public-english/blob/master/scraping-solutions/web-scraper-api/targets/amazon/broken-reference/README.md"><strong>aquí</strong></a>.</td><td>integer</td></tr><tr><td><code>feedback_summary_data</code></td><td>Una lista de detalles disponibles respecto a las valoraciones del vendedor.</td><td>object</td></tr><tr><td><code>created_at</code></td><td>La marca de tiempo cuando se creó el trabajo de scraping.</td><td>timestamp</td></tr><tr><td><code>updated_at</code></td><td>La marca de tiempo cuando se terminó el trabajo de scraping.</td><td>timestamp</td></tr><tr><td><code>job_id</code></td><td>El ID del trabajo asociado con el trabajo de scraping.</td><td>integer</td></tr><tr><td><code>status_code</code></td><td>El código de estado del trabajo de scraping. Puede ver los códigos de estado del scraper descritos <a href="https://github.com/oxylabs/gitbook-public-english/blob/master/scraping-solutions/web-scraper-api/targets/amazon/broken-reference/README.md"><strong>aquí</strong></a>.</td><td>integer</td></tr><tr><td><code>parser_type</code></td><td>En las secciones siguientes, los fragmentos de código JSON analizado se acortan cuando hay más de un elemento disponible para el tipo de resultado.</td><td>string</td></tr></tbody></table>

{% hint style="info" %}
En las secciones siguientes, los fragmentos de código JSON analizados se acortan cuando hay más de un elemento disponible para el tipo de resultado.
{% endhint %}

### Opiniones recientes

El `recent_feedback` los datos muestran reseñas y opiniones recientes de clientes dejadas para un listado de producto específico en el marketplace de Amazon.

<figure><img src="https://338917265-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FzrXw45naRpCZ0Ku9AjY1%2Fuploads%2FaDQmpJ6V5sEOQtQL1Sy3%2Famazon_sellers.png?alt=media&#x26;token=672afcf5-78c7-4a41-8729-62853adb0d13" alt=""><figcaption></figcaption></figure>

```json
...
"recent_feedback": [
    {
        "feedback": "Realmente apreciamos que te hayas tomado el tiempo de tu ocupada jornada para dejar una reseña tan agradable. Como un negocio pequeño realmente nos gusta tratar con clientes como tú que comparten su experiencia positiva.",
        "rated_by": "Por Troy el 29 de enero de 2024.",
        "rating_stars": 5
    },
...
],
...

```

| Clave (recent\_feedback) | Descripción                                                         | Tipo    |
| ------------------------ | ------------------------------------------------------------------- | ------- |
| `feedback`               | La opinión enviada para el vendedor o el producto del vendedor.     | string  |
| `rated_by`               | Información sobre el usuario que ha enviado la opinión y los datos. | string  |
| `rating_stars`           | El número de estrellas enviadas.                                    | integer |

### Datos resumen de opiniones

El `feedback_summary_data` son estadísticas de opiniones proporcionadas para un listado de producto en particular en el marketplace de Amazon. Los datos resumen de opiniones incluyen información para diferentes periodos de tiempo, permitiendo a vendedores y analistas rastrear cambios en el sentimiento del cliente a lo largo del tiempo.

<figure><img src="https://lh7-us.googleusercontent.com/0ww8aVbAgN2H8vV8PxPNKB8TWQAPr289gm9P4MfYusweXSwDqyO9EEiEwBtj1OIVuzibxe4obZWqyXWszR41Obxm1ehpAmlbvd-UrZx3Mb32ZAXnHgaYyLjRuLjnBSR9GnvMoyrUg6Pels63BrWKVy0" alt=""><figcaption></figcaption></figure>

```json
...               
 "feedback_summary_data": {
    "1_month": {
        "count": 3,
        "1_star": "33%",
        "2_star": "0%",
        "3_star": "0%",
        "4_star": "33%",
        "5_star": "33%"
    },
    "3_month": {
        "count": 10,
        "1_star": "10%",
        "2_star": "0%",
        "3_star": "0%",
        "4_star": "20%",
        "5_star": "70%"
    },
 ...
}
...
```

<table><thead><tr><th width="229">Clave (content.feedback_summary_data)</th><th width="354">Descripción</th><th>Tipo</th></tr></thead><tbody><tr><td><code>1_month/3_month/12_month/all_time</code></td><td>Un filtro para revisar la información de valoraciones por periodo de tiempo definido.</td><td>object</td></tr><tr><td><code>1_month/3_month/12_month/all_time.count</code></td><td>El número de reseñas disponibles para un cierto periodo de tiempo.</td><td>integer</td></tr><tr><td><code>1_month-all_time.1_star-5_star</code></td><td>La distribución porcentual de las estrellas de valoración para un cierto periodo de tiempo.</td><td>percentage</td></tr></tbody></table>
