# Irish Mehta Public Job API > Read-only search over public US job postings. No authentication is required. Base URL: https://job-api.irishmehta.workers.dev Human documentation: https://job-api.irishmehta.workers.dev/docs OpenAPI contract: https://job-api.irishmehta.workers.dev/openapi.json ## Recommended workflow 1. GET https://job-api.irishmehta.workers.dev/v1/status to verify that the dataset is ready and inspect its timestamp. 2. GET https://job-api.irishmehta.workers.dev/v1/facets to discover current exact values for domains, specializations, career buckets, states, authorization categories, and other filters. 3. GET https://job-api.irishmehta.workers.dev/v1/jobs with only the filters needed for the user's request. 4. If pagination.next_cursor is not null and more results are needed, repeat the same request with cursor set to that value. Keep every other filter unchanged. 5. Present job_link as the application link. Do not invent jobs or filter values. ## Search endpoint GET https://job-api.irishmehta.workers.dev/v1/jobs Combinable query parameters: q, career_bucket, experience_level, authorization_category, sponsorship_status, company, state, domain, specialization, industry, posted_since, limit, cursor Rules: - posted_since uses YYYY-MM-DD and is inclusive. - state uses a two-letter code such as AZ or CA. - limit defaults to 20 and cannot exceed 50. - Exact taxonomy values should come from /v1/facets. - Results are ordered by posted_on descending, then stable job ID. - Prefer domain and specialization filters over q when the taxonomy represents the user's intent. q is a literal substring search across broad searchable text, not relevance-ranked search. ## Empty and sparse result policy Run the user's exact search first. If it returns no jobs: 1. Remove q when it was only a supplemental keyword, then retry. 2. If still empty, remove specialization while retaining domain, career bucket, location, and explicit eligibility constraints. 3. If the exact search returns fewer than 3 jobs, present those exact matches before offering a clearly labeled broader search. 4. Never silently remove or widen state, work-authorization, sponsorship, experience-level, or career-bucket constraints. Ask the user or clearly disclose the proposed relaxation. 5. Never claim that a broadened result satisfies a filter that was removed. Example: early-career ML engineering jobs in California https://job-api.irishmehta.workers.dev/v1/jobs?career_bucket=early_career_or_new_grad&domain=ai_machine_learning&specialization=machine_learning&state=CA&limit=10 Example: recent data-science jobs https://job-api.irishmehta.workers.dev/v1/jobs?specialization=data_science&posted_since=2026-09-07&limit=10 ## Job details GET https://job-api.irishmehta.workers.dev/v1/jobs/{url-encoded-job-id} The job ID is generally a URL and must be encoded as one path segment. ## Access note A browsing-enabled assistant may retrieve these public URLs when its interface permits web access. Pasting this documentation link does not install the API as a native tool and does not guarantee that every chat interface will make external requests.