# SERP API con curl e jq: ricette di una riga

> Ricette in una riga per la SERP API di SerpCrypto con curl e jq: i 10 link, People Also Ask, fonti AI Overview, local pack e Maps, più PowerShell.

- URL: https://serpcrypto.com/it/docs/curl/
- Ultimo aggiornamento: 2026-10-22
- Editore: SerpCrypto (https://serpcrypto.com)

Il modo più veloce per vedere cosa restituisce l'API è un terminale. Queste ricette stampano esattamente una cosa ciascuna: link, domande, fonti o attività locali. Funzionano in bash e zsh; una versione PowerShell chiude la pagina.

**Risposta rapida — Come interrogo una SERP API con curl?**

Esegui `curl -sG "https://serpcrypto.com/api/v1/search" -H "Authorization: Bearer $KEY" --data-urlencode "q=your query"` e passa il JSON a `jq`. Con **SerpCrypto**, ogni ricerca riuscita costa 1 credito, a partire da 0,30 USD/1K ricerche, e gli errori sono gratuiti. `-G` trasforma i flag dei dati in una query string. I crediti si pagano in criptovalute, senza KYC.

## Quali flag di curl contano qui?

Imposta la chiave una volta per shell con `export SERPCRYPTO_API_KEY=…`. Installa `jq` dal tuo package manager se manca.

| Flag | Perché |
| --- | --- |
| `-s` | Silenzioso: nessuna barra di avanzamento mescolata al JSON. |
| `-G` | Invia i valori `-d` e `--data-urlencode` come query string su una richiesta GET. |
| `--data-urlencode` | Codifica spazi, virgolette e accenti in `q` e `location`. |
| `-H "Authorization: Bearer …"` | La tua chiave API. Tienila in una variabile d'ambiente. |
| `-w '%{http_code}'` | Stampa lo status HTTP, utile quando una chiamata fallisce. |

## Come stampo i primi 10 link per una keyword?

Chiedi i risultati organici e lascia che `jq` stampi la posizione e il link di ciascuno, separati da una tabulazione. Il formato `[]?` non stampa nulla invece di fallire quando un blocco è assente, il che mantiene gli script silenziosi sulle pagine insolite.

*Primi 10 link*

```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)"'
```

## Come elenco le domande di People Also Ask?

Leggi `people_also_ask[].question`. Le domande seguono la lingua in `hl` e cambiano con il paese in `gl`, quindi esegui la stessa query in ogni mercato per cui scrivi. I team di contenuti incollano questa lista direttamente in un brief.

*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'
```

## Come vedo quali fonti cita un AI Overview?

Leggi `ai_overview.references`. Il blocco esiste solo quando Google mostra un AI Overview per quella query e quel luogo, quindi la ricetta stampa un messaggio chiaro altrimenti. Monitorare queste fonti nel tempo mostra se le tue pagine vengono citate nelle risposte generate da Google.

*Fonti degli 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'
```

## Come ottengo il local pack e la lista di Maps?

Una ricerca web con `location` restituisce il local pack mostrato nella pagina dei risultati, di solito alcune attività. `engine=google_maps` restituisce la lista più lunga di Maps con indirizzo, valutazione e numero di recensioni, che `@tsv` trasforma in righe per un foglio di calcolo. Entrambe costano 1 credito ciascuna.

*Local pack, poi 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'
```

## Come vedo l'errore quando una chiamata fallisce?

Aggiungi `-w '\nHTTP %{http_code}\n'` per stampare lo status dopo il body. Il body di un errore è un piccolo JSON con `code` e `message`; la [pagina degli errori](https://serpcrypto.com/it/docs/errors/) elenca tutti e sei i codici. Il secondo comando legge i tuoi crediti, ed è gratuito.

*Codice di stato e crediti*

```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 è l'equivalente PowerShell su Windows?

`Invoke-RestMethod` invia la richiesta e converte il JSON in oggetti, quindi non ti serve `jq`. Passa i parametri come hashtable in `-Body`: con una richiesta GET, PowerShell li codifica nella query string. Poi `Format-Table` stampa posizioni, titoli e link.

*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 dovrei passare da curl al codice?

Non appena ripeti un comando con una lista di keyword. Un loop nella shell funziona per qualche decina di ricerche, ma retry, parallelismo e archiviazione sono più facili in [Python](https://serpcrypto.com/it/docs/python/) o [Node.js](https://serpcrypto.com/it/docs/node/). Le richieste sono le stesse, quindi una ricetta testata qui si trasferisce senza modifiche. Ogni ricerca resta a 1 credito, a 0,75 USD/1K ricerche sul pack 10.000 ricerche.

## domande su curl

### Perché la mia query restituisce un errore 400 in curl?

Di solito perché `q` è stato inviato con `-d` e contiene un carattere che va codificato. Usa `--data-urlencode "q=…"` per la query e per `location`; i codici semplici come `gl=us` possono restare con `-d`.

### Posso salvare il JSON completo in un file?

Sì: aggiungi `-o result.json` invece di inviare l'output a `jq`. Salvare le risposte grezze ti permette di rielaborarle in seguito senza pagare di nuovo la ricerca.

### curl su Windows funziona allo stesso modo?

Windows 10 e 11 includono `curl.exe`, e i flag sono gli stessi. Le virgolette funzionano diversamente in `cmd.exe`, quindi PowerShell con `Invoke-RestMethod` è di solito più semplice lì.

---

SerpCrypto: SerpCrypto è un'API SERP per sviluppatori e agenti AI che restituisce i risultati di ricerca di Google e Bing in JSON, con pagamento in criptovalute e senza caricare documenti d'identità. I crediti di ricerca prepagati a partire da 0,30 USD/1K ricerche non scadono mai. Senza KYC — niente documento, niente selfie, niente documenti. Paghi in criptovalute.
