Skip to content

Serper

POST /search/serper, forwarded to POST https://google.serper.dev/search.

Terminal window
curl -X POST "https://api.withgrowl.com/v1/search/serper" \
-H "Authorization: Bearer elo_pub_..." \
-H "Content-Type: application/json" \
-d '{
"q": "travel to vietnam",
"num": 5,
"gl": "us",
"hl": "en",
"tbs": "qdr:w"
}'

Common fields are below. The body goes to Serper as sent, so everything in Serper’s reference works; that reference is the complete, current schema.

FieldDescription
qThe search query. Google operators work: site:vietnam.travel keeps one domain, -site:pinterest.com drops one.
numNumber of results.
glCountry code, lower case, for example us.
hlLanguage code, lower case, for example en.
tbsFreshness: qdr:d, qdr:w, qdr:m or qdr:y for the past day, week, month or year.

Results are under organic. Each has title, link and snippet, and date when Google shows one.

{
"organic": [
{
"title": "Visit Vietnam: The Official Tourism Website of Vietnam",
"link": "https://vietnam.travel/",
"snippet": "Discover the highlights of Vietnam through the country's official tourism website.",
"date": "Feb 18, 2026",
"position": 1
}
]
}
  • Serper takes its key in X-API-KEY. Keep that header and put your Elo key in it, or use Authorization: Bearer; Elo sets Serper’s key itself.
  • Serper has no domain filter fields. Use site: in q, and keep the list short: a long one runs into Google’s query length limit.