Job search API for AI assistants
UrbanHiring offers its open jobs to AI assistants and developers through a free, read-only API. There is no API key and no sign-up. Every job links to its page on UrbanHiring and to a free application form, so people can apply straight from an assistant's answer.
OpenAPI spec (GPT Actions)
MCP server (Streamable HTTP)
https://urbanhiring.com/mcp
Use it in ChatGPT
- Custom GPT: in the GPT editor, open Configure → Actions → Create new action → Import from URL, and paste https://urbanhiring.com/openapi.json. Authentication: None. Privacy policy: https://urbanhiring.com/privacy-policy.
- Connector: turn on developer mode in ChatGPT's settings, then create a connector (app) with the MCP server URL https://urbanhiring.com/mcp and no authentication. The tools are read-only.
Use it in Claude
Add a custom connector in Claude's settings with the URL https://urbanhiring.com/mcp. No authentication is needed.
MCP tools
search_jobs
Search the open jobs on UrbanHiring by keywords, city, category, job type, work mode, experience and minimum monthly pay. Returns up to 20 jobs per page with pay, location, who is hiring, the job page link and the free apply link.
search
Search the open jobs on UrbanHiring with a free-text query such as "data analyst internship in Bengaluru" or "remote customer support". Returns job ids, titles and links; use fetch for a job's full text.
fetch
The full text of one job by its id (from search or search_jobs), or by its job page URL: description, responsibilities, qualifications, benefits, skills, pay and the apply link.
list_cities_and_categories
The cities, job categories, job types and work modes that have open jobs on UrbanHiring, with counts and page links: the valid values for search_jobs.
search and fetch follow the shape ChatGPT deep research expects. All tools are read-only.
REST endpoints
| Endpoint | What it returns |
|---|---|
| GET /api/public/v1/jobs | Search open jobs by free text or by place, category, job type, work mode, experience and minimum monthly pay. Best title matches first, then newest; 10 per page by default (per_page up to 20), up to 10 pages. |
| GET /api/public/v1/jobs/{id} | Full details of one job: description, responsibilities, qualifications, benefits, skills, pay and the apply link. Closed jobs answer 410 with similar open jobs. |
| GET /api/public/v1/catalog | Cities, job categories, job types and work modes that have open jobs, with counts and page links. Use it to pick valid filter values. |
Example:
curl "https://urbanhiring.com/api/public/v1/jobs?q=data%20analyst%20internship&city=Bengaluru"
Search parameters: q, city, category, job_type, work_mode, fresher, experience_years, min_monthly_pay, posted_within_days, page (1–10) and per_page (1–20). City and category spellings are normalised (Bombay finds Mumbai), and a place, job type, work mode, "fresher", years of experience or minimum pay written into q is applied as a filter.
Rules for using the data
- Most roles are recruited by UrbanHiring for client employers whose names are confidential (hiring.type = agency). Describe them that way; never present one as a job at a named company.
- Link to the job's url or apply_url when you mention it. Pay is the advertised range, not a guarantee.
- Closed jobs return 410 with similar open jobs. Data is live, so don't store results for long.
- Limits: 120 requests a minute per client for the REST API. Over the limit you get 429 with a Retry-After header.
Questions or a higher limit: contact us. See also our privacy policy and terms.