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

# Gemini

Extraia respostas do Gemini enviando prompts e receba dados parseados como JSON estruturado, texto simples ou Markdown.

O `gemini` a fonte permite enviar um prompt ao Google **Gemini** e receber uma resposta analisada e estruturada, incluindo as respostas em texto simples e Markdown.

## Exemplos de requisição

Os exemplos de código a seguir mostram como enviar um prompt ao Gemini usando [**Push-Pull**](/products/pt-br/web-scraper-api/integration-methods/push-pull.md).

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

```bash
curl 'https://data.oxylabs.io/v1/queries' \
--user 'USERNAME:PASSWORD' \
-H 'Content-Type: application/json' \
-d '{
        "source": "gemini",
        "prompt": "melhores suplementos para dormir melhor",
        "parse": true,
        "geo_location": "Estados Unidos",
        "callback_url": "https://your-server.com/oxylabs-callback"
    }'
```

{% endtab %}

{% tab title="Python" %}

```python
import requests
from pprint import pprint

# Estruture o payload.
payload = {
    'source': 'gemini',
    'prompt': 'melhores suplementos para dormir melhor',
    'parse': True,
    'geo_location': "Estados Unidos",
    'callback_url': "https://your-server.com/oxylabs-callback"
}

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

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

{% endtab %}

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

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

const username = "USERNAME";
const password = "PASSWORD";
const body = {
    source: "gemini",
    prompt: "melhores suplementos para dormir melhor",
    parse: true,
    geo_location: "Estados Unidos",
    callback_url: "https://your-server.com/oxylabs-callback"
};

const options = {
    hostname: "data.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("Erro:", error);
});

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

{% endtab %}

{% tab title="PHP" %}

```php
<?php

$params = array(
    'source' => 'gemini',
    'prompt' => 'melhores suplementos para dormir melhor',
    'parse' => true,
    'geo_location' => "Estados Unidos",
    'callback_url' => "https://your-server.com/oxylabs-callback"
);

$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, "https://data.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 'Erro:' . curl_error($ch);
}
curl_close($ch);
```

{% endtab %}

{% tab title="Go" %}

```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":       "gemini",
"prompt":       "melhores suplementos para dormir melhor",
"parse":        true,
"geo_location": "Estados Unidos",
"callback_url": "https://your-server.com/oxylabs-callback",
}

jsonValue, _ := json.Marshal(payload)

client := &http.Client{}
request, _ := http.NewRequest("POST",
"https://data.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 = "gemini",
                prompt = "melhores suplementos para dormir melhor",
                parse = true,
                geo_location = "Estados Unidos",
                callback_url = "https://your-server.com/oxylabs-callback"
            };

            var client = new HttpClient();

            Uri baseUri = new Uri("https://data.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;

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", "gemini");
        jsonObject.put("prompt", "melhores suplementos para dormir melhor");
        jsonObject.put("parse", true);
        jsonObject.put("geo_location", "Estados Unidos");
        jsonObject.put("callback_url", "https://your-server.com/oxylabs-callback");

        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)
                .build();

        var mediaType = MediaType.parse("application/json; charset=utf-8");
        var body = RequestBody.create(jsonObject.toString(), mediaType);
        var request = new Request.Builder()
                .url("https://data.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("Erro: " + exception.getMessage());
        }

        System.exit(0);
    }

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

{% endtab %}

{% tab title="JSON" %}

```json
{
    "source": "gemini",
    "prompt": "melhores suplementos para dormir melhor",
    "parse": true,
    "geo_location": "Estados Unidos",
    "callback_url": "https://your-server.com/oxylabs-callback"
}
```

{% endtab %}
{% endtabs %}

{% hint style="info" %}
**Observação:** A renderização de JavaScript está ativada por padrão para todas as fontes de LLM. Você não precisa incluir parâmetros de renderização no payload da requisição.
{% endhint %}

Ao enviar um job com [**Push-Pull**](/products/pt-br/web-scraper-api/integration-methods/push-pull.md) o método de integração (incluindo [consultas em lote](/products/pt-br/web-scraper-api/integration-methods/push-pull.md#batch-query)) retorna o ID do job imediatamente – não o resultado. Quando o status do job estiver `concluído`, recupere a resposta analisada. Consulte [**Método de integração**](/products/pt-br/web-scraper-api/integration-methods.md) na página LLMs and AI para o fluxo completo de envio e recuperação.

### Parâmetros da requisição

Configuração básica e opções de personalização para scraping do Gemini.

<table><thead><tr><th width="222">Parâmetro</th><th width="350.3333333333333">Descrição</th><th>Valor padrão</th></tr></thead><tbody><tr><td><mark style="background-color:green;"><strong><code>source</code></strong></mark></td><td>Define o destino do scraper. Use <code>gemini</code>.</td><td>–</td></tr><tr><td><mark style="background-color:green;"><strong><code>prompt</code></strong></mark></td><td>O prompt ou pergunta a ser enviada ao Gemini. Até 8.000 caracteres.</td><td>–</td></tr><tr><td><code>callback_url</code></td><td><strong>Recomendado.</strong> URL para onde entregamos uma notificação quando o job é concluído. <a href="https://developers.oxylabs.io/products/web-scraper-api/integration-methods/push-pull"><strong>Mais informações</strong></a><strong>.</strong></td><td>–</td></tr><tr><td><code>parse</code></td><td>Defina como <code>true</code> para dados JSON estruturados.</td><td><code>false</code></td></tr><tr><td><code>geo_location</code></td><td>Especifique um país a partir do qual rotear a requisição. <a href="/products/pt-br/web-scraper-api/features/localization.md"><strong>Mais informações</strong></a>.</td><td>–</td></tr><tr><td><code>browser_instructions</code></td><td>Instruções personalizadas opcionais do navegador ao renderizar JavaScript. <a href="/products/pt-br/web-scraper-api/features/js-rendering-and-browser-control.md#browser-instructions"><strong>Mais informações</strong></a>.</td><td>–</td></tr></tbody></table>

&#x20;   \- parâmetro obrigatório

## Dados estruturados

Depois que o job é recuperado pelo endpoint de resultados Push-Pull, Web Scraper API é capaz de extrair um objeto JSON que contém a saída do Gemini, oferecendo dados estruturados sobre vários elementos da página de resultados.

<details>

<summary><code>gemini</code> saída estruturada</summary>

```json
{
  "results": [
    {
      "job_id": "7470031540181837825",
      "status_code": 200,
      "url": "https://gemini.google.com/app/ca6b069d5af5c809",
      "content": {
        "prompt": "melhores suplementos para dormir melhor",
        "response_text": "Se você está virando de um lado para o outro na cama, você definitivamente não está sozinho. A prateleira de suplementos está cheia de opções que prometem ajudar você a pegar no sono, mas elas geralmente se enquadram em algumas categorias diferentes com base em como realmente afetam o seu corpo. Aqui...",
        "markdown_text": "Se você está virando de um lado para o outro na cama, você definitivamente não está sozinho. A prateleira de suplementos está cheia de opções que prometem ajudar você a pegar no sono, mas elas geralmente se enquadram em algumas categorias diferentes com base em como realmente afetam o seu corpo.\n\n Aqui...",
        "citations": [
          {
            "title": "Hartford HealthCare",
            "url": "https://hartfordhealthcare.org/about-us/news-press/news-detail?articleId=66180",
            "text": "Esses 3 suplementos podem realmente melhorar seu sono? | Hartford HealthCare | CT",
            "description": "- raiz de valeriana. Esta opção herbal para dormir provavelmente funciona agindo nos receptores GABA no cérebro, assim como o magnésio. \"Mas não é isenta de efeitos colaterais,\" diz ..."
          },
          {
            "title": "BBC Good Food",
            "url": "https://www.bbcgoodfood.com/review/best-sleep-supplements#:~:text=It's%20easy%20to%20get%20enough,a%20role%20in%20sleep%20regulation.",
            "text": "Os melhores suplementos para dormir de 2026 – testados e aprovados - BBC Good Food",
            "description": "É fácil obter o suficiente pela dieta, mas se você quiser suplementar, a NRV é em torno de 300 mg, e procure por glicinato de magnésio, que demonstrou ..."
          },
          {
            "title": "PMC - NIH",
            "url": "https://pmc.ncbi.nlm.nih.gov/articles/PMC11082867/#:~:text=Melatonin%20is%20a%20hormone%20produced,promotes%20relaxation%20and%20reduced%20alertness.",
            "text": "Evidências atuais sobre suplementos alimentares comuns para qualidade do sono - PMC - NIH",
            "description": "A melatonina é um hormônio produzido pela glândula pineal no cérebro e desempenha um papel crítico na regulação do ciclo sono-vigília. A glândula pineal começa ..."
          },
          ...
        ],
        "additional_results": {
          "sources_results": [
            {
              "title": "Melhores suplementos para dormir 2026: escolhas classificadas por evidência para um sono mais profundo",
              "url": "https://www.bettervitals.com/learn/best-sleep-supplement-stack-2026"
            },
            {
              "title": "10 dos melhores auxiliares naturais para dormir em 2026 - Healthline",
              "url": "https://www.healthline.com/nutrition/sleep-aids"
            },
            ...
          ]
        },
        "parse_status_code": 12000
      }
    }
  ]
}
```

</details>

{% hint style="warning" %}
A composição da resposta pode variar dependendo se a consulta foi feita a partir de um **desktop** ou **mobile** dispositivo.
{% endhint %}

### Dicionário de dados de saída

Todos os destinos de LLM retornam o mesmo envelope de nível superior `job` e `results[]` estrutura. Consulte [LLMs and AI](/api-reference/dedicated-scrapers/llm-and-ai-scrapers.md) para a referência completa de metadados.

A tabela a seguir mostra os campos específicos do Gemini em `results[].content` campos:

<table><thead><tr><th width="181.17578125">Nome do campo</th><th width="427">Descrição</th><th>Tipo</th></tr></thead><tbody><tr><td><code>prompt</code></td><td>Prompt enviado.</td><td>string</td></tr><tr><td><code>raw_response</code></td><td>Resposta bruta transmitida do Gemini, uma linha por item.</td><td>array de strings</td></tr><tr><td><code>response_text</code></td><td>Resposta em texto simples do Gemini.</td><td>string</td></tr><tr><td><code>markdown_text</code></td><td>Resposta completa em Markdown.</td><td>string</td></tr><tr><td><mark style="background-color:$warning;"><code>citations</code></mark></td><td>Citações de fontes referenciadas na resposta. Cada objeto contém <code>title</code>, <code>url</code>, <code>text</code>, e <code>description</code>.</td><td>array</td></tr><tr><td><mark style="background-color:$warning;"><code>additional_results</code></mark></td><td>Resultados de pesquisa adicionais. <code>sources_results</code> - lista de páginas da web que o Gemini consultou ao responder (<code>title</code> e <code>url</code>).</td><td>objeto</td></tr><tr><td><code>parse_status_code</code></td><td><code>12000</code> – bem-sucedido. Caso contrário, o parser falhou ao extrair alguns ou todos os campos estruturados.</td><td>inteiro</td></tr><tr><td><mark style="background-color:$warning;"><code>model</code></mark></td><td>Modelo de IA usado para gerar a resposta.</td><td>string</td></tr></tbody></table>

&#x20;    – condicional, retornado apenas quando o conteúdo estiver na resposta do LLM.


---

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

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

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

```
GET https://developers.oxylabs.io/products/pt-br/web-scraper-api/alvos/llms-e-ia/gemini.md?ask=<question>&goal=<user_goal>
```

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

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

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