Spot hiring signals from companies' own career sites
Get fresh job postings straight from company career sites and ATSs as JSON, by title, location and company, to find growing teams and buyers.
A company that posts five data engineering roles in a month is telling you something: a team is growing, a project is funded, a tool will be bought. Sales, recruiters and analysts all want that signal, but job boards repost listings and lag behind. Lovely Router reads postings from companies' own career sites and applicant tracking systems such as Greenhouse, Lever and Workday. Send titles, locations or company names, get one JSON object per job, pay per job from a prepaid balance.
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.
Spot hiring signals from companies' own career sites. 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
Decide what a signal looks like
A job title that matches your product (for example "data engineer"), a location, or a list of target companies.
Run the tool with a cap
Send the search to
POST /v1/tools/career-site-jobs/run. Setlimitin the input andmax_resultsin the request body. The run holds its maximum cost from your balance and returns the jobs as JSON.Run it on a schedule
Set
timeRangeto24hor7d, run at the same time each day or week, and store the jobs. New postings per company are your hiring signal.
Get job postings with one request
Company career-site jobs takes lists in titleSearch, locationSearch, organizationSearch and descriptionSearch, plus timeRange for how far back to look. limit caps the number of jobs:
curl https://lovelyrouter.com/v1/tools/career-site-jobs/run \
-H "Authorization: Bearer $LOVELY_API_KEY" \
-H "content-type: application/json" \
-d '{
"input": {
"titleSearch": ["data engineer"],
"locationSearch": ["United States"],
"limit": 10
},
"max_results": 10
}'A run still going after 60 seconds returns 202; Run a tool shows how to poll. A run returns at least 10 and at most 100 jobs. timeRange accepts 1h, 24h, 7d and 6m, where 6m backfills all active jobs. Locations must be written as "City, State/Region, Country", in English.
What each job holds
| Field group | What you get |
|---|---|
| Posting | Job title and description |
| Company | The organization that posted it |
| Place | The job location |
| Source | The company's own career site or ATS |
Recipes
Search for the job title that signals your product need, for example "data engineer", and contact the company while the team is growing.
Put a rival in organizationSearch with 7d as timeRange, and see which teams it is hiring for.
Use :* after a stem, as in Soft:*, to cover Software and its variants in one search.
Run 6m once to see what a company has open now, then switch to 24h and run daily for new postings only.
Search a title and a location, then pass new postings to a recruiting channel so the team sees them first.
Prefer plain words? Connect the MCP server and tell Claude Code or Cursor: "Find data engineer jobs in the United States from the last 7 days, group them by company, and list the ten companies with the most openings. Set max_results to 100."
Pair it with other job sources
Company career sites give the first-party view. Job boards add reach, and company pages add context:
Fresh job postings straight from companies' own career sites and ATSs (Greenhouse, Lever, Workday…), searchable by title, location and company.
LinkedIn job postings for a title/skill and location (or a jobs search URL): title, company, location, salary, posted date, applicants, description.
Indeed job postings by title and location: company, salary, posted date, description.
Glassdoor job postings by keyword and location.
LinkedIn company pages: description, industry, size, headquarters, website, followers.
linkedin-jobsadds jobs posted on LinkedIn.indeed-jobscovers a large general job board.glassdoor-jobsadds jobs together with the Glassdoor view of employers.linkedin-companygives company details for the organizations you find.
For the wider job of using jobs data, 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.
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
Which career sites does it cover?+
The tool reads job postings straight from companies' own career sites and applicant tracking systems, including Greenhouse, Lever and Workday.
How fresh are the postings?+
timeRange sets the window: 1h, 24h, 7d or 6m for a backfill of all active jobs. Run at the same time each day or week to avoid gaps and duplicates.
How do I search for one company?+
Put its name in organizationSearch. Use :* for prefix matching, such as Google:*.
How many jobs can one run return?+
At least 10 and up to 100 per run, with limit as the cap in the input.
Do I need a subscription?+
No. You add credit to a prepaid balance and each run draws it down. Failed runs pay only for the results they delivered, and nothing renews automatically.
Using hiring as a signal? See recruiting data, lead generation, and the tool catalog.