# API de SERP com curl e jq: receitas de uma linha

> API de SERP da SerpCrypto: receitas em uma linha com curl e jq para os 10 principais links, People Also Ask, fontes do AI Overview, pacote local e Maps.

- URL: https://serpcrypto.com/pt/docs/curl/
- Última atualização: 2026-10-22
- Editor: SerpCrypto (https://serpcrypto.com)

A forma mais rápida de ver o que a API retorna é um terminal. Cada uma destas receitas imprime exatamente uma coisa: links, perguntas, fontes ou empresas locais. Elas funcionam no bash e no zsh; uma versão em PowerShell fecha a página.

**Resposta rápida — Como faço uma consulta a uma API de SERP com curl?**

Execute `curl -sG "https://serpcrypto.com/api/v1/search" -H "Authorization: Bearer $KEY" --data-urlencode "q=your query"` e canalize o JSON para `jq`. Com **SerpCrypto**, cada pesquisa bem-sucedida custa 1 crédito, a partir de US$ 0,30/1K pesquisas, e erros são gratuitos. `-G` transforma as flags de dados em uma query string. Os créditos são pagos com cripto, sem KYC.

## Quais flags do curl importam aqui?

Defina a chave uma vez por shell com `export SERPCRYPTO_API_KEY=…`. Instale `jq` pelo seu gerenciador de pacotes caso não esteja disponível.

| Flag | Por quê |
| --- | --- |
| `-s` | Silencioso: nenhuma barra de progresso misturada ao JSON. |
| `-G` | Envia os valores de `-d` e `--data-urlencode` como query string em uma requisição GET. |
| `--data-urlencode` | Codifica espaços, aspas e acentos em `q` e `location`. |
| `-H "Authorization: Bearer …"` | Sua chave de API. Mantenha-a em uma variável de ambiente. |
| `-w '%{http_code}'` | Exibe o status HTTP, útil quando uma chamada falha. |

## Como faço para exibir os 10 principais links de uma palavra-chave?

Peça os resultados orgânicos e deixe o `jq` exibir a posição e o link de cada um, separados por tabulação. O formato `[]?` não exibe nada em vez de falhar quando um bloco está ausente, o que mantém os scripts silenciosos em páginas incomuns.

*10 principais links*

```bash
# Top 10 organic links, one per line
curl -sG "https://serpcrypto.com/api/v1/search" \
  -H "Authorization: Bearer $SERPCRYPTO_API_KEY" \
  --data-urlencode "q=kubernetes cost monitoring" -d gl=us -d hl=en \
  | jq -r '.organic_results[]? | "\(.position)\t\(.link)"'
```

## Como faço para listar as perguntas do People Also Ask?

Leia o `people_also_ask[].question`. As perguntas seguem o idioma definido em `hl` e mudam conforme o país em `gl`, então execute a mesma consulta em cada mercado para o qual você escreve. As equipes de conteúdo colam essa lista direto em um briefing.

*People Also Ask*

```bash
# People Also Ask questions, ready for a content brief
curl -sG "https://serpcrypto.com/api/v1/search" \
  -H "Authorization: Bearer $SERPCRYPTO_API_KEY" \
  --data-urlencode "q=how to brew cold brew" -d gl=gb -d hl=en \
  | jq -r '.people_also_ask[]?.question'
```

## Como faço para ver quais fontes um AI Overview cita?

Leia o `ai_overview.references`. O bloco só existe quando o Google exibe um AI Overview para essa consulta e local, então a receita exibe uma mensagem clara caso contrário. Acompanhar essas fontes ao longo do tempo mostra se suas páginas são citadas nas respostas geradas do Google.

*Fontes do AI Overview*

```bash
# Sources cited by the AI Overview, if the page shows one
curl -sG "https://serpcrypto.com/api/v1/search" \
  -H "Authorization: Bearer $SERPCRYPTO_API_KEY" \
  --data-urlencode "q=what is a heat pump" -d gl=us -d hl=en \
  | jq -r 'if .ai_overview then .ai_overview.references[] | "\(.index)\t\(.source)\t\(.link)" else "no AI Overview for this query" end'
```

## Como faço para obter o local pack e a lista do Maps?

Uma pesquisa na web com `location` retorna o local pack exibido na página de resultados, geralmente alguns negócios. O `engine=google_maps` retorna a lista mais longa do Maps com endereço, avaliação e número de avaliações, que o `@tsv` transforma em linhas para uma planilha. Ambos custam 1 crédito cada.

*Local pack, depois Google Maps*

```bash
# Local pack in a city, then the full Maps list for the same query
curl -sG "https://serpcrypto.com/api/v1/search" \
  -H "Authorization: Bearer $SERPCRYPTO_API_KEY" \
  --data-urlencode "q=vegan restaurant" \
  --data-urlencode "location=Toronto, Ontario, Canada" -d gl=ca -d hl=en \
  | jq -r '.local_results[]? | "\(.position)\t\(.title)\t\(.rating // "-")"'

curl -sG "https://serpcrypto.com/api/v1/search" \
  -H "Authorization: Bearer $SERPCRYPTO_API_KEY" \
  -d engine=google_maps --data-urlencode "q=vegan restaurant Toronto" -d gl=ca -d hl=en \
  | jq -r '.local_results[]? | [.title, .address, .rating, .reviews] | @tsv'
```

## Como faço para ver o erro quando uma chamada falha?

Adicione `-w '\nHTTP %{http_code}\n'` para exibir o status após o corpo. O corpo de erro é um JSON pequeno com `code` e `message`; a [página de erros](https://serpcrypto.com/pt/docs/errors/) lista todos os seis códigos. O segundo comando consulta seus créditos, o que é gratuito.

*Código de status e créditos*

```bash
# Print the body, then the HTTP status on its own line
curl -sG "https://serpcrypto.com/api/v1/search" \
  -H "Authorization: Bearer $SERPCRYPTO_API_KEY" \
  --data-urlencode "q=test" -w '\nHTTP %{http_code}\n'

# Credits left (free call)
curl -s "https://serpcrypto.com/api/v1/credits" -H "Authorization: Bearer $SERPCRYPTO_API_KEY" | jq .
```

## Qual é o equivalente em PowerShell no Windows?

`Invoke-RestMethod` envia a requisição e converte o JSON em objetos, então você não precisa de `jq`. Passe os parâmetros como hashtable em `-Body`: em uma requisição GET, o PowerShell os codifica na query string. O `Format-Table` então exibe posições, títulos e links.

*PowerShell*

```powershell
# Windows PowerShell 5.1 or PowerShell 7
$headers = @{ Authorization = "Bearer $env:SERPCRYPTO_API_KEY" }
$query = @{ q = "kubernetes cost monitoring"; gl = "us"; hl = "en" }
$data = Invoke-RestMethod -Uri "https://serpcrypto.com/api/v1/search" -Headers $headers -Body $query -Method Get
$data.organic_results | Select-Object position, title, link | Format-Table -AutoSize
```

## Quando devo passar do curl para o código?

Assim que você repetir um comando com uma lista de palavras-chave. Um loop de shell funciona para algumas dezenas de pesquisas, mas retries, paralelismo e armazenamento são mais fáceis em [Python](https://serpcrypto.com/pt/docs/python/) ou [Node.js](https://serpcrypto.com/pt/docs/node/). As requisições são as mesmas, então uma receita testada aqui funciona sem alterações. Cada pesquisa continua custando 1 crédito, a partir de US$ 0,75/1K pesquisas no pacote 10.000 pesquisas.

## Dúvidas sobre curl

### Por que minha consulta retorna um erro 400 no curl?

Geralmente porque `q` foi enviado com `-d` e contém um caractere que precisa de codificação. Use `--data-urlencode "q=…"` para a consulta e para `location`; códigos simples como `gl=us` podem ficar com `-d`.

### Posso salvar o JSON completo em um arquivo?

Sim: adicione `-o result.json` em vez de canalizar para `jq`. Salvar as respostas brutas permite reprocessá-las depois sem pagar pela pesquisa novamente.

### O curl no Windows funciona da mesma forma?

O Windows 10 e 11 incluem `curl.exe`, e as flags são as mesmas. As aspas diferem no `cmd.exe`, então o PowerShell com `Invoke-RestMethod` costuma ser mais simples ali.

---

SerpCrypto: O SerpCrypto é uma API de SERP para desenvolvedores e agentes de IA que retorna resultados de pesquisa do Google e do Bing em JSON, pago com cripto e sem envio de documento de identidade. Os créditos de pesquisa pré-pagos a partir de US$ 0,30/1K pesquisas nunca expiram. Sem KYC — sem documento, sem selfie, sem documentos. Pague com cripto.
