Search Indeed job postings by keyword and location, resolve a valid location string via autocomplete, and pull the full detail of a single posting — all as normalized JSON from the Crawlora API, no scraping indeed.com by hand.
When to use this skill
- "Search for jobs in on Indeed."
- "What's the right Indeed location string for <partial city/area>?"
- "Pull the full detail for this Indeed job (job key )."
- "Find recent postings on Indeed within the last N days."
- "Page through Indeed search results for ."
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
- Resolve a location (optional but recommended) —
/indeed/locations/suggesttakes a partial location string (q) and returns Indeed's own autocomplete suggestions, the same ones the app's search bar offers, so you can build a validlvalue for search instead of guessing. - Search —
/indeed/searchtakes keywords (q, required) plus optionall(location),radius,fromage(only jobs posted within the last N days),sort(relevanceordate), andpagefor pagination. Each result includes ajob_keyfor pulling full detail. - Job detail —
/indeed/jobtakesjk(the 16-character hex job key from a search result) and returns the full posting.
Full endpoint list, methods, and params: reference/endpoints.md.
Calling the API
# Resolve a location string:
scripts/crawlora.sh /indeed/locations/suggest q="san fran" | jq '.'
# Search:
scripts/crawlora.sh /indeed/search q="staff engineer" l="San Francisco, CA" fromage=7 sort=date | jq '.'
# Job detail (jk from a search result):
scripts/crawlora.sh /indeed/job jk=abcdef0123456789 | 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 all Indeed endpoints this skill uses.
Examples
- Role search with a fuzzy location:
/indeed/locations/suggeston the user's rough city name to get a validlvalue, then/indeed/searchwith that value plusqandsort=datefor the newest postings first. - Enrich a search result: run
/indeed/search, take thejob_keyoff any hit, and call/indeed/jobto pull the full description, salary, and application details for that one posting.
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 Indeed postings; respect Indeed's terms.
- Security: key lives in
CRAWLORA_API_KEYonly — never hardcode, query-param, or commit it. page2+ andfromagefall back to a slower page-based transport — page 1 with nofromageuses Indeed's fast credential-free GraphQL API; requesting page 2+ or filtering byfromageswitches transports, with the same normalized response shape either way.- Location autocomplete has no page-based fallback —
/indeed/locations/suggestis GraphQL-only, so it can fail independently of search/job-detail. - Results are paginated on
/indeed/search— passpageto walk the full list.