# Formación de solicitudes

Lea guías detalladas sobre cómo comenzar y realizar solicitudes usando [**Web Scraper API**](https://developers.oxylabs.io/documentation/es/soluciones-de-scraping/web-scraper-api) para diferentes sitios web.

## Motores de búsqueda

### Empezando

Seleccione el motor de búsqueda que desea raspar: [**Google**](https://developers.oxylabs.io/documentation/es/soluciones-de-scraping/web-scraper-api/targets/google), [**Bing**](https://developers.oxylabs.io/documentation/es/soluciones-de-scraping/web-scraper-api/targets/bing), [**Otros motores de búsqueda**](https://developers.oxylabs.io/documentation/es/soluciones-de-scraping/web-scraper-api/targets/generic-target).

### Ejemplo de solicitud

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

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

# 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: "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 el método de integración [**Realtime**](https://developers.oxylabs.io/documentation/es/soluciones-de-scraping/web-scraper-api/integration-methods/realtime) síncrono 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 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.

### Formando una solicitud

1. Elija su método de integración: síncrono ([**Realtime**](https://developers.oxylabs.io/documentation/es/soluciones-de-scraping/web-scraper-api/integration-methods/realtime), [**Proxy Endpoint**](https://developers.oxylabs.io/documentation/es/soluciones-de-scraping/web-scraper-api/integration-methods/proxy-endpoint)) o asíncrono  ([**Push-Pull**](https://developers.oxylabs.io/documentation/es/soluciones-de-scraping/web-scraper-api/integration-methods/push-pull)).
2. Al formar una solicitud, incluya los siguientes elementos:

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

1. **Endpoint:**

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

2. **Nombre de usuario y contraseña** ([**Autenticación HTTP**](https://developer.mozilla.org/en-US/docs/Web/HTTP/Authentication))**.** Cree credenciales de usuario API ya sea durante su [**registro de prueba o compra del producto**](https://dashboard.oxylabs.io/en/registration?productToBuy=SCRAPI_SERP)**.**

```
USERNAME:PASSWORD
```

{% hint style="warning" %}
Si necesita más de un usuario API para su cuenta, por favor contacte a nuestro [**soporte al cliente**](mailto:support@oxylabs.io) o envíe un mensaje a nuestro soporte de chat en vivo 24/7.
{% endhint %}

3. **Content-type**. Al enviar trabajos, siempre agregue este encabezado:

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

4. **Payload:**
   1. `source` - Este parámetro establece el scraper que se usará para procesar su solicitud.
   2. `URL` o `query` - Proporcione el `URL` o `query` para el tipo de página que desea raspar. Consulte la tabla a continuación y las subpáginas objetivo correspondientes para obtener orientación detallada sobre cuándo usar cada parámetro.
   3. [**Parámetros adicionales**](https://developers.oxylabs.io/documentation/es/soluciones-de-scraping/web-scraper-api/features): Opcionalmente, puede incluir parámetros adicionales como `geo_location`, `user_agent_type`, `parse`, `render` y más para personalizar su solicitud 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.** En `cURL`es `-k` o `--insecure`.
3. **Nombre de usuario y contraseña** ([**Autenticación HTTP**](https://developer.mozilla.org/en-US/docs/Web/HTTP/Authentication))**.** Cree credenciales de usuario API ya sea durante su [**registro de prueba o compra del producto**](https://dashboard.oxylabs.io/en/registration?productToBuy=SCRAPI_SERP)**.**

```
USERNAME:PASSWORD
```

{% hint style="warning" %}
Si necesita más de un usuario API para su cuenta, por favor contacte a nuestro [**soporte al cliente**](mailto:support@oxylabs.io) o envíe un mensaje a nuestro soporte de chat en vivo 24/7.
{% endhint %}

4. **Payload:**
   1. `URL` - Proporcione el `URL` para la página que desea raspar.
   2. [**Parámetros adicionales**](https://developers.oxylabs.io/documentation/es/soluciones-de-scraping/web-scraper-api/features): Opcionalmente, puede incluir parámetros adicionales como `geo_location`, `user_agent_type`, `parse`, y envíelos como encabezados.

```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. **Nombre de usuario y contraseña** ([**Autenticación HTTP**](https://developer.mozilla.org/en-US/docs/Web/HTTP/Authentication))**.** Cree credenciales de usuario API ya sea durante su [**registro de prueba o compra del producto**](https://dashboard.oxylabs.io/en/registration?productToBuy=SCRAPI_SERP)**.**

```
USERNAME:PASSWORD
```

{% hint style="warning" %}
Si necesita más de un usuario API para su cuenta, por favor contacte a nuestro [**soporte al cliente**](mailto:support@oxylabs.io) o envíe un mensaje a nuestro soporte de chat en vivo 24/7.
{% endhint %}

3. **Content-type**. Al enviar trabajos, siempre agregue este encabezado:

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

4. **Payload:**
   1. `source` - Este parámetro establece el scraper que se usará para procesar su solicitud.
   2. `URL` o `query` - Proporcione el `URL` o `query` para el tipo de página que desea raspar. Consulte la tabla a continuación y las subpáginas objetivo correspondientes para obtener orientación detallada sobre cuándo usar cada parámetro.
   3. [**Parámetros adicionales**](https://developers.oxylabs.io/documentation/es/soluciones-de-scraping/web-scraper-api/features): Opcionalmente, puede incluir parámetros adicionales como `geo_location`, `user_agent_type`, `parse`y más para personalizar su solicitud de scraping.

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

5. Al enviar una solicitud, recibirá rápidamente una respuesta JSON con todos los detalles del trabajo, incluidos los parámetros del trabajo, el ID del trabajo y las URL para descargar los resultados del trabajo:

```
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">Objetivo</th><th width="246">Origen (URL de Scraping)</th><th>Origen (Usando Query)</th></tr></thead><tbody><tr><td><a href="../soluciones-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="../soluciones-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="../soluciones-de-scraping/web-scraper-api/targets/generic-target"><strong>Otros motores de búsqueda</strong></a></td><td><code>universal</code></td><td>Usar <code>query</code> parámetro no es compatible</td></tr></tbody></table>

## Mercados

### Empezando

Seleccione el mercado en línea que desea raspar: [**Amazon**](https://developers.oxylabs.io/documentation/es/soluciones-de-scraping/web-scraper-api/targets/amazon)**,** [**Google Shopping**](https://developers.oxylabs.io/documentation/es/soluciones-de-scraping/web-scraper-api/targets/google)**,** [**Walmart**](https://developers.oxylabs.io/documentation/es/soluciones-de-scraping/web-scraper-api/targets/walmart)**,** [**Best Buy**](https://developers.oxylabs.io/documentation/es/soluciones-de-scraping/web-scraper-api/targets/north-american-e-commerce/bestbuy)**,** [**Etsy**](https://developers.oxylabs.io/documentation/es/soluciones-de-scraping/web-scraper-api/targets/etsy)**,** [**Objetivo**](https://developers.oxylabs.io/documentation/es/soluciones-de-scraping/web-scraper-api/targets/north-american-e-commerce/target)**,** [**Otros sitios web**](https://developers.oxylabs.io/documentation/es/soluciones-de-scraping/web-scraper-api/targets/generic-target)**.**

### Ejemplo de solicitud

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

# Estructurar payload.
payload = {
    'source': 'amazon_product',
    'query': 'B07FZ8S74R',
    'geo_location': '90210',
    '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_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 el método de integración [**Realtime**](https://developers.oxylabs.io/documentation/es/soluciones-de-scraping/web-scraper-api/integration-methods/realtime) síncrono 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 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.

### Formando una solicitud

1. Elija su método de integración: síncrono ([**Realtime**](https://developers.oxylabs.io/documentation/es/soluciones-de-scraping/web-scraper-api/integration-methods/realtime), [**Proxy Endpoint**](https://developers.oxylabs.io/documentation/es/soluciones-de-scraping/web-scraper-api/integration-methods/proxy-endpoint)) o asíncrono  ([**Push-Pull**](https://developers.oxylabs.io/documentation/es/soluciones-de-scraping/web-scraper-api/integration-methods/push-pull)).
2. Al formar una solicitud, incluya los siguientes elementos:

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

1. **Endpoint:**

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

2. **Nombre de usuario y contraseña** ([**Autenticación HTTP**](https://developer.mozilla.org/en-US/docs/Web/HTTP/Authentication))**.** Cree credenciales de usuario API ya sea durante su [**registro de prueba o compra del producto**](https://dashboard.oxylabs.io/en/registration?productToBuy=SCRAPI_SERP)**.**

```
USERNAME:PASSWORD
```

{% hint style="warning" %}
Si necesita más de un usuario API para su cuenta, por favor contacte a nuestro [**soporte al cliente**](mailto:support@oxylabs.io) o envíe un mensaje a nuestro soporte de chat en vivo 24/7.
{% endhint %}

3. **Content-type**. Al enviar trabajos, siempre agregue este encabezado:

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

4. **Payload:**
   1. `source` - Este parámetro establece el scraper que se usará para procesar su solicitud.
   2. `URL` o `query` - Proporcione el `URL` o `query` para el tipo de página que desea raspar. Consulte la tabla a continuación y las subpáginas objetivo correspondientes para obtener orientación detallada sobre cuándo usar cada parámetro.
   3. [**Parámetros adicionales**](https://developers.oxylabs.io/documentation/es/soluciones-de-scraping/web-scraper-api/features): Opcionalmente, puede incluir parámetros adicionales como `geo_location`, `user_agent_type`, `parse`, `render` y más para personalizar su solicitud 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.** En `cURL`es `-k` o `--insecure`.
3. **Nombre de usuario y contraseña** ([**Autenticación HTTP**](https://developer.mozilla.org/en-US/docs/Web/HTTP/Authentication))**.** Cree credenciales de usuario API ya sea durante su [**registro de prueba o compra del producto**](https://dashboard.oxylabs.io/en/registration?productToBuy=SCRAPI_SERP)**.**

```
USERNAME:PASSWORD
```

{% hint style="warning" %}
Si necesita más de un usuario API para su cuenta, por favor contacte a nuestro [**soporte al cliente**](mailto:support@oxylabs.io) o envíe un mensaje a nuestro soporte de chat en vivo 24/7.
{% endhint %}

4. **Payload:**
   1. `URL` - Proporcione el `URL` para la página que desea raspar.
   2. [**Parámetros adicionales**](https://developers.oxylabs.io/documentation/es/soluciones-de-scraping/web-scraper-api/features): Opcionalmente, puede incluir parámetros adicionales como `geo_location`, `user_agent_type`, `parse`, y envíelos como encabezados.

```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. **Nombre de usuario y contraseña** ([**Autenticación HTTP**](https://developer.mozilla.org/en-US/docs/Web/HTTP/Authentication))**.** Cree credenciales de usuario API ya sea durante su [**registro de prueba o compra del producto**](https://dashboard.oxylabs.io/en/registration?productToBuy=SCRAPI_SERP)**.**

```
USERNAME:PASSWORD
```

{% hint style="warning" %}
Si necesita más de un usuario API para su cuenta, por favor contacte a nuestro [**soporte al cliente**](mailto:support@oxylabs.io) o envíe un mensaje a nuestro soporte de chat en vivo 24/7.
{% endhint %}

3. **Content-type**. Al enviar trabajos, siempre agregue este encabezado:

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

4. **Payload:**
   1. `source` - Este parámetro establece el scraper que se usará para procesar su solicitud.
   2. `URL` o `query` - Proporcione el `URL` o `query` para el tipo de página que desea raspar. Consulte la tabla a continuación y las subpáginas objetivo correspondientes para obtener orientación detallada sobre cuándo usar cada parámetro.
   3. [**Parámetros adicionales**](https://developers.oxylabs.io/documentation/es/soluciones-de-scraping/web-scraper-api/features): Opcionalmente, puede incluir parámetros adicionales como `geo_location`, `user_agent_type`, `parse`y más para personalizar su solicitud de scraping.

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

5. Al enviar una solicitud, recibirá rápidamente una respuesta JSON con todos los detalles del trabajo, incluidos los parámetros del trabajo, el ID del trabajo y las URL para descargar los resultados del trabajo:

```
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">Objetivo</th><th width="246">Origen (URL de Scraping)</th><th>Origen (Usando Query)</th></tr></thead><tbody><tr><td><a href="../soluciones-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="../soluciones-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="../soluciones-de-scraping/web-scraper-api/targets/walmart"><strong>Walmart</strong></a><br><a href="../soluciones-de-scraping/web-scraper-api/targets/north-american-e-commerce/bestbuy"><strong>Best Buy</strong></a><br><a href="../soluciones-de-scraping/web-scraper-api/targets/etsy"><strong>Etsy</strong></a><br><a href="../soluciones-de-scraping/web-scraper-api/targets/north-american-e-commerce/target"><strong>Objetivo</strong></a><br><a href="../soluciones-de-scraping/web-scraper-api/targets/generic-target"><strong>Otros sitios web</strong></a></td><td><code>universal</code></td><td>Usar <code>query</code> parámetro no es compatible</td></tr></tbody></table>

## Otros sitios web

### Empezando

Raspe cualquier URL con nuestro `universal` source. También puede agregar [**parámetros adicionales**](https://developers.oxylabs.io/documentation/es/soluciones-de-scraping/web-scraper-api/features).&#x20;

### Ejemplo de solicitud

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


# Estructurar payload.
payload = {
    'source': 'universal',
    'url': 'https://sandbox.oxylabs.io/',
    # 'render': 'html', # Si el tipo de página requiere
}

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

# En lugar de respuesta con estado del trabajo y URL de resultados, esto devolverá el
# JSON response with results.
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' // Si el tipo de página requiere
};

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
# Toda la cadena que envíe debe estar codificada en 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' // Si el tipo de página requiere
);

$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" // Si el tipo de página requiere
	}

	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", // Si el tipo de página requiere
            };

            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 el método de integración [**Realtime**](https://developers.oxylabs.io/documentation/es/soluciones-de-scraping/web-scraper-api/integration-methods/realtime) síncrono 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 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.

### Formando una solicitud

1. Elija su método de integración: síncrono ([**Realtime**](https://developers.oxylabs.io/documentation/es/soluciones-de-scraping/web-scraper-api/integration-methods/realtime), [**Proxy Endpoint**](https://developers.oxylabs.io/documentation/es/soluciones-de-scraping/web-scraper-api/integration-methods/proxy-endpoint)) o asíncrono  ([**Push-Pull**](https://developers.oxylabs.io/documentation/es/soluciones-de-scraping/web-scraper-api/integration-methods/push-pull)).
2. Al formar una solicitud, incluya los siguientes elementos:

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

1. **Endpoint:**

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

2. **Nombre de usuario y contraseña** ([**Autenticación HTTP**](https://developer.mozilla.org/en-US/docs/Web/HTTP/Authentication))**.** Cree credenciales de usuario API ya sea durante su [**registro de prueba o compra del producto**](https://dashboard.oxylabs.io/en/registration?productToBuy=SCRAPI_SERP)**.**

```
USERNAME:PASSWORD
```

{% hint style="warning" %}
Si necesita más de un usuario API para su cuenta, por favor contacte a nuestro [**soporte al cliente**](mailto:support@oxylabs.io) o envíe un mensaje a nuestro soporte de chat en vivo 24/7.
{% endhint %}

3. **Content-type**. Al enviar trabajos, siempre agregue este encabezado:

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

4. **Payload**.

   1. `source` - Este parámetro establece el scraper que se usará para procesar su solicitud.
   2. `URL` - Proporcione el `URL` del objetivo que desea raspar, por ejemplo:
      1. **Bienes raíces**: Idealista, Redfin, Zillow, Zoopla
      2. **Viajes**: Airbnb, Agoda, Booking, TripAdvisor
      3. **Automotriz**: Crunchbase, ZoomInfo, AngelList, Product Hunt
      4. **Datos de la empresa**: Netflix, SoundCloud, YouTube, IMDb
      5. **Entretenimiento**: AutoEurope, Autotrader, RockAuto, Halfords
      6. **Cualquier otro**.
   3. [**Parámetros adicionales**](https://developers.oxylabs.io/documentation/es/soluciones-de-scraping/web-scraper-api/features): Opcionalmente, puede incluir parámetros adicionales como `geo_location`, `user_agent_type`y más para personalizar su solicitud 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.** En `cURL`es `-k` o `--insecure`.
3. **Nombre de usuario y contraseña** ([**Autenticación HTTP**](https://developer.mozilla.org/en-US/docs/Web/HTTP/Authentication))**.** Cree credenciales de usuario API ya sea durante su [**registro de prueba o compra del producto**](https://dashboard.oxylabs.io/en/registration?productToBuy=SCRAPI_SERP)**.**

```
USERNAME:PASSWORD
```

{% hint style="warning" %}
Si necesita más de un usuario API para su cuenta, por favor contacte a nuestro [**soporte al cliente**](mailto:support@oxylabs.io) o envíe un mensaje a nuestro soporte de chat en vivo 24/7.
{% endhint %}

4. **Payload:**
   1. `URL` - Proporcione el `URL` para la página que desea raspar, por ejemplo:
      1. **Bienes raíces**: Idealista, Redfin, Zillow, Zoopla
      2. **Viajes**: Airbnb, Agoda, Booking, TripAdvisor
      3. **Automotriz**: Crunchbase, ZoomInfo, AngelList, Product Hunt
      4. **Datos de la empresa**: Netflix, SoundCloud, YouTube, IMDb
      5. **Entretenimiento**: AutoEurope, Autotrader, RockAuto, Halfords
      6. **Cualquier otro**.
   2. [**Parámetros adicionales**](https://developers.oxylabs.io/documentation/es/soluciones-de-scraping/web-scraper-api/features): Opcionalmente, puede incluir parámetros adicionales como `geo_location`, `user_agent_type`, y envíelos como encabezados.

{% 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. **Nombre de usuario y contraseña** ([**Autenticación HTTP**](https://developer.mozilla.org/en-US/docs/Web/HTTP/Authentication))**.** Cree credenciales de usuario API ya sea durante su [**registro de prueba o compra del producto**](https://dashboard.oxylabs.io/en/registration?productToBuy=SCRAPI_SERP)**.**

```
USERNAME:PASSWORD
```

{% hint style="warning" %}
Si necesita más de un usuario API para su cuenta, por favor contacte a nuestro [**soporte al cliente**](mailto:support@oxylabs.io) o envíe un mensaje a nuestro soporte de chat en vivo 24/7.
{% endhint %}

3. **Content-type**. Al enviar trabajos, siempre agregue este encabezado:

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

4. **Payload**.

   1. `source` - Este parámetro establece el scraper que se usará para procesar su solicitud.
   2. `URL` - Proporcione el `URL` del objetivo que desea raspar, por ejemplo:
      1. **Bienes raíces**: Idealista, Redfin, Zillow, Zoopla
      2. **Viajes**: Airbnb, Agoda, Booking, TripAdvisor
      3. **Automotriz**: Crunchbase, ZoomInfo, AngelList, Product Hunt
      4. **Datos de la empresa**: Netflix, SoundCloud, YouTube, IMDb
      5. **Entretenimiento**: AutoEurope, Autotrader, RockAuto, Halfords
      6. **Cualquier otro**.
   3. [**Parámetros adicionales**](https://developers.oxylabs.io/documentation/es/soluciones-de-scraping/web-scraper-api/features): Opcionalmente, puede incluir parámetros adicionales como `geo_location`, `user_agent_type`y más para personalizar su solicitud 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. Al enviar una solicitud, recibirá rápidamente una respuesta JSON con todos los detalles del trabajo, incluidos los parámetros del trabajo, el ID del trabajo y las URL para descargar los resultados del trabajo:

```
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" %}
Si necesita ayuda para realizar su primera solicitud, no dude en contactarnos a través del chat en vivo disponible 24/7.
{% endhint %}

{% hint style="info" %}
*Toda la información aquí proporcionada se ofrece "tal cual" y solo con fines informativos. No hacemos ninguna representación y rechazamos toda responsabilidad con respecto a su uso de cualquier información contenida en esta página. Antes de participar en actividades de scraping de cualquier tipo, debe consultar a sus asesores legales y leer cuidadosamente los términos de servicio del sitio web en particular o obtener una licencia de scraping.*
{% endhint %}
