Turn Google results into typed data, not HTML scraping
A Google results page is a dozen different data products in one response — but only if you get it parsed instead of raw. One monitor call returns every block as its own typed array.
One call, every block
curl -X POST https://api.answerline.dev/v1/monitor/google \
-H "Authorization: Bearer $API_KEY" \
-d '{ "prompt": "plumber austin tx", "country": "US", "usState": "TX", "zip": "78701" }'
{ "result": {
"organicResults": [...], "peopleAlsoAsk": [...], "ads": [...],
"localResults": [...], "aiOverview": {...}, "knowledgePanel": {...},
"relatedSearches": [...], "videos": [...], "images": [...]
} }
Each block keeps its own fields — localResults[] carries ratings and addresses, ads[] carries advertiser and display URL, organicResults[] carries position, title, URL and snippet.
Why typed blocks beat scraping
- Positions are computed, not inferred from DOM order — an organic result’s
positionis its rank, stable across layout changes. - Blocks appear conditionally: local pack only on local intent, PAA only when Google generates questions. Typed fields make presence itself a signal — “does this keyword trigger an AI Overview?” is a boolean check, not a parsing guess.
- Geo is a parameter, not a proxy config:
country,usState,zipper request. A national rank check and a ZIP-level local check are the same call shape.
Where it pays
Rank tracking pipelines (store organicResults[].position per keyword per market), keyword research (mine peopleAlsoAsk[] and relatedSearches[] — the PAA workflow), local SEO (localResults[] per ZIP), and AIO coverage tracking (aiOverview presence over time — the monitoring setup).
Full result types on the Google Search engine page and reference.