JobsWithPay

JobsWithPay API and MCP server

Open tech jobs with the posted pay, read directly from the job boards of the companies that hire and checked every day. Free, read only, no key and no sign-in.

JSON endpoints

EndpointWhat it gives
GET /api/v1/jobs/searchSearch open tech jobs. All filters are optional. Up to 40 jobs a page; use next_cursor for the next page. Example: /api/v1/jobs/search?query=inference&location=bay_area&only_with_pay=true&sort=pay
GET /api/v1/jobs/{id}One job: full text (first 6,000 characters), posted pay, posted and last-checked dates, open or closed, and the apply link of the company. Example: /api/v1/jobs/351
GET /api/v1/pay/statsOpen jobs, the share with posted pay, and the median posted yearly USD base range for a job type and place. Example: /api/v1/pay/stats?job_type=ml_ai&location=nyc
GET /api/v1/pay/top-companiesCompanies with the highest median posted yearly USD base range (5 or more jobs with pay). Example: /api/v1/pay/top-companies?location=bay_area&job_type=software&limit=10

The OpenAPI 3.1 description is at /api/v1/openapi.json. A list value can repeat the key (location=nyc&location=bay_area) or use commas (location=nyc,bay_area). A wrong value gives HTTP 400 with the allowed values.

Search filters

NameValues
queryWords in the job title or the company name, at most 120 characters.
job_typesoftware, ml_ai, inference_systems, research, infra_cloud, data_eng, data_science, security, product, design, quant, solutions, hardware, analysis
locationbay_area, nyc, remote_us, us_other, remote_global, international, india, bengaluru, hyderabad, delhi_ncr, mumbai, pune, chennai, remote_india
levelintern, entry, senior, staff, principal, director
workplaceonsite, hybrid, remote
min_base_pay_usd100000, 150000, 200000, 250000, 300000: the top of the posted yearly USD range reaches this amount
posted_within1d, 7d, 30d
only_with_paytrue: only jobs that post a pay range
sortnewest (default) or pay
cursornext_cursor from the previous page

Places: bay_area (San Francisco Bay Area); nyc (New York City area); remote_us (remote in the US); us_other (other US places); remote_global (remote, any country); international (outside the US); india (India); bengaluru (Bengaluru); hyderabad (Hyderabad); delhi_ncr (Delhi NCR); mumbai (Mumbai); pune (Pune); chennai (Chennai); remote_india (remote in India).

MCP server

Add https://jobswithpay.com/api/mcp as a connector in ChatGPT, Claude or another agent (Streamable HTTP, no sign-in). It has the same 4 tools: search_jobs, get_job, salary_stats and top_paying_companies.

What the data means

Each job comes from the job board of the company: Greenhouse, Lever, Ashby, Workday, company careers sites, and some company boards through licensed feeds. We check each job every day and remove a job when the company removes it. last_checked is the date of the last check. Pay is the base range that the company posted, in its own currency and period; it does not include stock or bonus, and we never estimate it. The pay statistics use yearly USD ranges only.

Fair use

The API is free. Answers are cached for about 5 minutes, so do not ask for the same thing more often. When you show the data, name JobsWithPay as the source and link the job page (url), which has the apply link of the company. For high volume or a data partnership, write to us through the About page.