Introducing the finddatasciencejobs API: every DS, ML and AI role as JSON

A free data science jobs API. Pull every live data science, ML engineering and AI research role on the board as clean JSON — no contract, no sales call. Here's how it works and how to build on it.

Introducing the finddatasciencejobs API

We built finddatasciencejobs to answer one question well: where are the real data science, ML engineering and AI research jobs right now? We scrape them from company ATSes, dedupe them, and enrich each one with structured fields — skills, seniority, role type, a plain-English summary.

Until today, all of that lived behind the website. Now it's an API.

Every live role on the board is available as clean JSON at https://api.finddatasciencejobs.com/v1. Use it in your app, your newsletter, your Discord bot, or your own job board. It's free, there's no contract, and there's no sales call.

If you just want to see it work, this returns ten jobs right now, no key needed:

curl "https://api.finddatasciencejobs.com/v1/jobs?limit=10"


find data science jobs api
find data science jobs api

Why we're doing this

Most job data is either locked up or garbage. The big aggregators either don't have an API, charge enterprise money for one, or ship you a firehose of stale, duplicated, keyword-stuffed listings that you then have to clean yourself.

Our board is already narrow and already clean. It's only data science, ML and AI roles, every listing is deduplicated on ingest, and every one is enriched with the same structured schema. That's exactly the shape you want when you're building something on top of it — you shouldn't have to re-parse a description to find out whether a job is remote or what seniority it is. We already did that work, so the API just hands it to you.

The honest version: opening the data up is also good for us. If your newsletter or bot links back to the original posting, that's distribution we didn't have to pay for. So the deal is deliberately simple — you get clean job data for free, we ask for a link back. More on that below.

What you get per job

Each job comes back with:

  • Title and company (with the company's website and logo)
  • Location — country and cities — plus a remote flag
  • Employment type, seniority, and role type (e.g. ML engineer, data scientist, data engineer, analyst, MLOps, research scientist)
  • Skill tags extracted from the posting
  • Salary range, where the employer actually published one
  • A short AI-written summary of the role
  • The full description
  • The date it was posted
  • A url back to the job's page on finddatasciencejobs.com

That last field matters for two reasons: it's where you send applicants, and it's the link the attribution terms ask for.

The endpoints

There are three, and you can get useful results from the first one without signing up for anything.

GET /jobs — list and filter roles

The workhorse. Returns the current set of jobs, filtered by whatever query parameters you pass:

Parameter

What it does

limit

How many jobs to return

since

Only jobs posted on or after a date (YYYY-MM-DD)

search

Full-text search across the listing

remote

Filter to remote roles

country

Filter by country

role_type

ML engineer, data scientist, data engineer, etc.

seniority

Junior, mid, senior, staff

A newsletter that goes out weekly, for example, only wants what's new since the last send:

curl "https://api.finddatasciencejobs.com/v1/jobs?limit=100&since=2026-09-01" \
-H "X-API-Key: fdsj_your_key_here"

GET /jobs/{slug} — one role

Fetch a single job by its slug when you want the full record for a detail view.

POST /keys — get an API key

You can query /jobs anonymously, but a free key raises your daily allowance from 10 jobs to 500. Getting one is a single request:

curl -X POST "https://api.finddatasciencejobs.com/v1/keys" \
-H "Content-Type: application/json" \
-d '{"email":"you@example.com","site":"https://your-site.com"}'

The key comes back in the response and is not shown again — save it somewhere safe when you get it. From then on, pass it as an X-API-Key header.

Rate limits

We keep this deliberately plain:

Tier

Limit

Anonymous (no key)

10 jobs / day

Free key

500 jobs / day

Higher

Talk to us

The anonymous tier is there so you can test and prototype without committing to anything. The free key is enough to run a real newsletter or a small board. If you're building something that genuinely needs more, don't try to route around the limit with rotating keys — just email us. We'd rather know what you're building and say yes.

The one rule: attribution

The data is free. In exchange, we ask three things, and they're all about sending credit and traffic back to the source:

  1. Link back. Every job comes with a url on this site. If you display the job, link to that URL.
  2. Name us as the source. Once per page is plenty.
  3. Send applicants to the job's page here. Don't strip the listing and route people elsewhere.

That's it. It's the same bargain that makes the whole thing sustainable: we do the scraping, deduping and enrichment; you get structured data for free; the original postings get the traffic they're owed.

What people are building with it

A few things this is a good fit for:

  • A niche newsletter — pull everything since your last issue, filter to remote=true or a role_type, and you have your content.
  • A Discord or Slack bot — post new senior ML roles to a channel as they land.
  • Your own job board or aggregator — seed or supplement it with a clean, pre-enriched DS/ML feed instead of scraping from scratch.
  • Analysis — the salary and skills fields make it easy to track what the market is actually asking for over time.

Start here

curl "https://api.finddatasciencejobs.com/v1/jobs?limit=10"

If that gives you what you need, grab a free key and go. Full parameter reference lives at finddatasciencejobs.com/api.

Building something with it? We'd love to see it — and if you hit the ceiling of the free tier, that's a conversation, not a paywall.

about the author

Shaqeeq Khan is a growth marketer, designer, and startup builder based in Colombo, Sri Lanka. He is currently CMO and Co-Founder at Clarp.io and former Chief Growth Officer at Zyner, and has previously led marketing for Metana a web3 startup, scaling it from $0 to $1M ARR. His work sits at the intersection of growth, recruitment, and product — including experience with hiring systems and applicant-facing tools, alongside building products like AccentBridge and an early-stage voice AI MVP. He holds a BA (Hons) in Graphic Design from Falmouth University.