Track which roles employers hire for in a city on Glassdoor
Search Glassdoor job postings by keyword and location as JSON, to see which roles are in demand, who is hiring and how fast postings appear.
To plan a hiring budget, decide where to open an office, or see what a competitor is building, count the job postings: which roles, in which city, from which employers. Searching by hand gives you a page of results and no history. Lovely Router runs the search for you. Send a keyword and a location, get one JSON object per job, pay per job from a prepaid balance. Call it from a script, a weekly job or an AI agent with one API key.
Hand it to your AI agent
Copy this prompt into Claude Code, Cursor, Codex or any coding agent. It tells the agent where the docs are and how to use your API key.
Track which roles employers hire for in a city on Glassdoor. Use the Lovely Router data tools: each returns JSON and is billed per result.
- Docs (read first): https://lovelyrouter.com/docs/tools/find.md and https://lovelyrouter.com/docs/tools/run.md
- Plan first: POST https://lovelyrouter.com/v1/tools/suggest with `{"task": "<my task in plain words>"}` (free). It returns the tools to run in order, each with an example `input`, the `input_required` fields, an estimated cost and a ready-made `run` request. Replace the example values with my task's; if a field is unclear, read the tool with GET https://lovelyrouter.com/v1/tools/<id>. To browse instead, POST https://lovelyrouter.com/v1/tools/discover searches the catalog.
- Show me the plan and its estimated cost (`total_est_cost_usd`) before running anything large.
- Run: POST https://lovelyrouter.com/v1/tools/<id>/run with `{"input": {...}, "max_results": N}`. A 200 has the finished run with `items`; a 202 means it is still running, so poll the `poll` path until `status` is `succeeded`, `failed`, `timed_out` or `stopped`.
- Only delivered results are billed. Keep max_results small on the first run, check the output, then scale up.
- If you support MCP, connect https://lovelyrouter.com/mcp instead (Streamable HTTP, same key; https://lovelyrouter.com/docs/tools/mcp.md) and use suggest_tools, get_tool and run_tool.
- Auth: read my API key from the LOVELY_API_KEY environment variable and send it as `Authorization: Bearer $LOVELY_API_KEY`. Never print or commit the key. If it is not set, ask me to create one at https://lovelyrouter.com/app/keys.
- Billing is prepaid: every call is charged to my balance, so test with a small request before running anything large.
- Every docs page is plain Markdown; the full index is https://lovelyrouter.com/llms.txt.
My task: <the inputs (links, keywords or accounts) and how many results you need>How it works
Choose the role and place
A job title, skill or company in
keywords, and a city, state or country inlocation.Run the tool with a cap
Send them with
limitandmax_results.daysOldkeeps only recent postings. The run holds its maximum cost from your balance.Count and compare
Count postings per company, role and week. A rising count is demand.
Get Glassdoor jobs with one request
Search Glassdoor jobs needs keywords and location. limit caps the number of jobs and daysOld the age in days:
curl https://lovelyrouter.com/v1/tools/glassdoor-jobs/run \
-H "Authorization: Bearer $LOVELY_API_KEY" \
-H "content-type: application/json" \
-d '{
"input": {
"keywords": "product manager",
"location": "Seattle",
"limit": 20
},
"max_results": 20
}'Use daysOld to read only the last week of postings, so each scheduled run pays for new ones. A run still going after 60 seconds returns 202; Run a tool shows how to poll.
What each job holds
| Field group | What you get |
|---|---|
| Posting | Job postings that match the keyword and location |
| Filters | Searched by keyword, location and posting age |
The data file lists the result simply as job postings. Run a small test and inspect the rows before you build on specific fields.
Recipes
Search a competitor's name in keywords and look at which roles they add over several weeks.
Count postings for a role in three cities to decide where to recruit.
Search for a skill each month and chart the posting counts.
Companies hiring for a role your product serves are likely to need it. Review the employers and qualify them by hand.
Collect postings for the same title across employers and compare how they describe the role.
Prefer plain words? Connect the MCP server and tell Claude Code or Cursor: "Search Glassdoor for data engineer jobs in Austin posted in the last 14 days, count postings per company, and show the top ten. Set max_results to 200."
Pair it with other job sources
No single job site has everything. Compare with:
Glassdoor job postings by keyword and location.
Indeed job postings by title and location: company, salary, posted date, description.
LinkedIn job postings for a title/skill and location (or a jobs search URL): title, company, location, salary, posted date, applicants, description.
Fresh job postings straight from companies' own career sites and ATSs (Greenhouse, Lever, Workday…), searchable by title, location and company.
Freelance jobs on Upwork for a search: title, budget or rate, skills, client history, posted time.
indeed-jobsanother large job board to cross-check counts.linkedin-jobspostings with a professional-network audience.career-site-jobspostings from employers' own career sites.upwork-jobsfreelance demand rather than full-time roles.
For the full workflow, see recruiting data.
What you pay
You pay per job: starting a run holds its maximum cost, the per-call fee plus the per-job fee times max_results, and the run settles to what it returned. The rest of the hold goes back to your balance. A run that fails or times out pays only for the jobs it delivered, and a run refused at the start costs nothing.
Reading 100 postings a week is billed as 100 postings a week. There is no subscription and no monthly minimum: top up from $5, and one balance pays for tools and models. The card above shows today's price; pricing lists every tool.
Frequently asked questions
Can I search by company?+
Yes. keywords accepts a title, a skill or a company.
Can I get only recent postings?+
Yes. Set daysOld to the maximum age of a posting in days.
How many jobs can one run return?+
Up to 200. Set limit and max_results.
Do I need a Glassdoor account?+
No. You send a search and an API key.
Do I need a subscription?+
No. You add credit to a prepaid balance and each run draws it down. Nothing renews automatically.
More on the same theme: recruiting data, lead generation and the tool catalog.