37,714 new jobs posted per day (7-day avg)

Structured job datastraight from employers.

Access 1M+ job listings from ATS platforms and company career sites in a single, structured JSON feed. No scrapers to maintain. Just one simple REST API.

1,000,000

Total jobs indexed

~37,714

Avg. posted per day (7d)

+450,000

Added past 30 days

3,500

Employers

The API

One endpoint. Everything you need.

A single GET /jobs call returns each job as one structured object. Nothing to stitch together yourself.

  • Full company profile: logo, socials, size, team
  • Structured location: city, state, and country IDs
  • Salary parsed into min, max, and currency
  • Pagination and query metadata on every response
Try the playground →
example: GET /jobs
curl https://api.cleanjobdata.com/jobs?title=backend&remote=true&extra_fields=description
 
{ "data": [ { "id": 40652107, "title": "Senior Backend Engineer", "description": "We're looking for a backend engineer to help scale our payments infrastructure...", "locations": [ { "kind": "city_state_country", "city_id": 4671654, "city_name": "Austin", "state_id": 5254411, "state_name": "Texas", "country_id": 233, "country_name": "United States", "country_code": "US", "is_primary": true, "lat": 30.2672, "lng": -97.7431 } ], "company": { "name": "Loop", "logo": "https://logo.clearbit.com/loop.com", "description": "Loop builds payments infrastructure for modern fintechs.", "website_url": "https://loop.com", "linkedin_url": "https://linkedin.com/company/loop", "twitter_url": "https://twitter.com/loop", "github_url": "https://github.com/loop", "team": [ { "name": "Jamie Chen", "title": "CTO", "linkedin_url": "https://linkedin.com/in/jamiechen" } ], "employee_count": "201-500", "industry": "Fintech", "headquarters": "Austin, TX", "founded": 2019 }, "salary_min": 150000, "salary_max": 190000, "salary_currency": "USD", "employment_type": "FULL_TIME", "experience_level": "SE", "has_remote": true, "remote_type": "fully_remote", "published": "2026-09-01T12:00:00.000Z", "application_url": "https://loop.com/jobs/1234" } ], "pagination": { "limit": 20, "next_page": "eyJ2IjoxLCJzYiI6InB1Ymxpc2hlZCJ9", "prev_page": null }, "meta": { "query_time_ms": 42, "filters_applied": [ { "key": "title", "value": "backend" }, { "key": "remote_only", "value": true } ] } }
What you get

One schema, every source.

Normalized schema

Jobs from every source we index map to the same object, so you don't rewrite parsers when a source changes its format.

Powerful filters

Filter by keyword, country, city, remote, seniority, salary range, employment type, and more, all composable.

Rich location data

Locations come with lat/lng, city ID, country code, and timezone where we can resolve them. Geo suggest API included on all paid plans.

Company metadata

Logo, LinkedIn, headcount, description, and social links returned alongside each job; no extra calls needed.

Salary extracted

Salary parsed into min, max, and currency wherever the source provides it.

Continuously updated

New postings are indexed as employers publish them. The daily average and 30-day counters up top are live, not marketing copy.

How it works

Integrate in three steps.

1

Get your API key

Create a free account. No credit card. Your key is available instantly in the dashboard.

2

Call /jobs

Pass your key as Bearer auth. Combine filters. Paginate with the cursor returned in each response.

3

Build your product

Render results on your job board, feed them into your AI pipeline, or sync to your database via n8n or cron.

Data feeds

Pre-scoped feeds by region.

Each feed is a ready-made query with live preview results. Useful for testing coverage before you integrate.

25 feeds total: cities, states, countries, and role-specific. Browse all feeds →

Don't want to build it yourself?

We'll build your job board for you.

Branded frontend, real listings from day one, job search, employer posting, resume parsing. Designed, built, and kept running after launch.

See how it works →
Pricing

Start free. Scale when you need to.

Need the whole dataset?

Daily flat-file dumps, licensed for your product.

For teams that need bulk data, not an API key: redistribution, resale, or training AI models on structured job postings.

See Enterprise →
FAQ

Questions, answered.

Can I use CleanJobData for a commercial job board?
Yes, that's the primary use case. Teams ship niche boards, internal talent radars, and hiring products on the same JSON feed. Keep your API key on the server, pick a plan sized to your query volume, and use the cursor token in each response's pagination object (returned as next_page) to walk forward through results.
How is this different from scraping job sites myself?
You get listings from many sources already normalized into one schema (titles, companies, structured locations, salary, remote type, employment type) instead of maintaining a parser per career site that breaks every time a layout changes. Employer identity is also resolved (employer_id on every job), so you can group listings by company without doing that matching yourself.
Do I need an API key to try the playground?
No. The live playground runs against a preview endpoint so you can shape queries without signing up. When you move to production, create an account, copy a key from the dashboard, and call the same endpoints from your backend with that key in the X-API-Key header.
What can I filter and what comes back in each job?
Combine keyword search (title), geography (country_id, state_id, city_id), remote=true, experience_level, and salary=min,max in one request. See the Jobs API reference for the full parameter list. Each job comes back as structured JSON (company, locations, salary, employment type, remote flag), and list responses exclude the full description by default; add extra_fields=description if you need it.
How does pricing scale if my traffic grows?
Plans are monthly and usage-tiered: Starter is $39/mo for 50,000 requests (up to 2.5M jobs a month at 50 per response), Pro is $199/mo for 200,000 requests (up to 20M jobs at 100 per response). Every response includes X-RateLimit-Remaining so you can see how close you are to the cap before you hit it. If Pro isn't enough, Enterprise gets you custom volume and rate limits; reach out through support.
Where do I get help if I am stuck?
Read the documentation and error codes, then reach out via Support. We are happy to help with integration questions and account issues.
How many accounts can I have?
To prevent abuse of our trial tier, we limit each individual or company to one account. Multiple accounts created by the same person may be suspended.
Can I launch a job board without building from scratch?
Yes. We provide a high-performance Next.js 16 starter template that you can deploy in one click. It includes filters, search, and SEO optimizations out of the box, so you can focus on your brand and community.