About serp-keyword-research
serp-keyword-research is a skill for collecting search-result samples, autocomplete ideas, and trend signals through the Crawlora API. It is intended for SEO practitioners and researchers who need localized search snapshots and keyword discovery, while keeping each engine’s result semantics distinct.
Key features
- 01Capture search-result samples across engines
- 02Retrieve news, video, and image results
- 03Collect autocomplete keyword suggestions
- 04Query Google Trends signals
- 05Preserve locale and engine-specific context
Use cases
- 01Snapshot results for an SEO target query
- 02Expand seed terms into keyword ideas
- 03Compare keyword interest over time or regions
- 04Track related and rising search queries
Install
Copy the command and run it in a terminal.
npx skills add https:/ / github.com/ crawlora-org/ crawlora-skills --skill serp-keyword-researchAfter installing, type/serp-keyword-researchin Claude Code to confirm it loaded.
Bundled filesreference/endpoints.mdscripts/crawlora.sh
Details
From the project READMESERP & keyword research
Capture search-engine result samples and keyword/trend signals as normalized JSON from the Crawlora API. Baidu and Yandex add localized result surfaces; Qwant and Startpage currently contribute autocomplete suggestions only.
When to use this skill
- "What ranks for on Google / Bing?" / "snapshot the SERP for …".
- "Keyword ideas / autocomplete for …" (suggest endpoints).
- "Is trending?" / "interest over time / by region for ."
- "Related and rising queries for …" (Google Trends).
- SEO/SERP monitoring, keyword discovery, or trend research.
Setup (one-time)
- Get a free Crawlora API key (2,000 credits/mo, no card) at https://crawlora.net.
- Set
CRAWLORA_API_KEYin the environment before running the helper. - The helper reads
CRAWLORA_API_KEYfrom the environment and sends requests tohttps://api.crawlora.net/api/v1. Missing/invalid key →401.
How it works
- SERP — Google search is
POST /google/searchwith flatkeyword,language, andcountryfields. Bing, Brave, DuckDuckGo, Yahoo, Baidu, and Yandex useGETwithq. Search results are provider-specific samples: preserve each engine's market/language settings, result order, and retrieval time; do not treat ranks from different engines as a common position metric. On a503challenge, record the failure and use another engine only when it fits the requested market. - Verticals — news/videos/images per engine (
/google/news,/bing/videos,/duckduckgo/news,/duckduckgo/image,/duckduckgo/video,/duckduckgo/shopping, …). - Keyword ideas — autosuggest:
GET /google/suggest?q=...,/bing/suggest,/brave/suggest,/baidu/suggest,/yandex/suggest,/qwant/suggest, and/startpage/suggest. Suggestions are query ideas in the source's ranking order, not search-volume estimates or proof of audience demand. - Trends — Google Trends
POSTendpoints:/google/trends/explore/interest-over-time,/interest-by-region,/related-topics,/rising-queries,/top-queries(body:{"keywords":[...]}), plusGET /google/trends/trendingfor what's hot now.
Full endpoint list, methods, and params: reference/endpoints.md.
Calling the API
# GET search engines + suggest:
scripts/crawlora.sh /bing/search q="web scraping api" | jq '.'
scripts/crawlora.sh /brave/search q="web scraping api" | jq '.'
scripts/crawlora.sh /duckduckgo/search q="web scraping api" | jq '.'
scripts/crawlora.sh /yahoo-search/search q="web scraping api" | jq '.'
scripts/crawlora.sh /baidu/search q="web scraping api"
scripts/crawlora.sh /yandex/search q="web scraping api"
scripts/crawlora.sh /google/suggest q="web scraping" | jq '.'
scripts/crawlora.sh /qwant/suggest q="web scraping"
scripts/crawlora.sh /startpage/suggest q="web scraping"
# POST endpoints take a JSON body (note -X POST):
scripts/crawlora.sh -X POST /google/search '{"keyword":"web scraping api","language":"en","country":"us"}' | jq '.'
scripts/crawlora.sh -X POST /google/trends/explore/interest-over-time '{"keywords":["web scraping"]}' | jq '.'
Use scripts/crawlora.sh for all requests; it keeps the API key out of command-line arguments.
Endpoint reference
See reference/endpoints.md for every search and
suggestion endpoint this skill uses (method, path, params, and description).
Examples
- SERP snapshot:
POST /google/search(and/bing/search) for a target query; record the ranked result titles/URLs to track positions over time. - Keyword expansion: seed term →
/google/suggest→ for each suggestion,POST /google/trends/explore/rising-queriesto find momentum. - Trend check:
POST /google/trends/explore/interest-over-timewith{"keywords":["electric bikes","e-bikes"]}and compare the series.
Notes & limits
- Credits / pay-on-success: billed only on
2xx; free tier 2,000 credits/mo. Key at https://crawlora.net. - Public data only — public search results; respect each engine's terms.
- Search result lists are not full-index exports. Baidu/Yandex, Qwant/Startpage, and English-language providers have different locale and result semantics; keep samples separate and do not infer universal rank, traffic, or demand.
- Security: key lives in
CRAWLORA_API_KEYonly — never hardcode, query-param, or commit it. - Search endpoints may return
503when the engine serves a challenge page — retry or switch engines (Google ↔ Bing ↔ Brave). Google search is rate-limited to ~1 req/s (429on excess).