# Headcount Labs > Headcount Labs is fresh, deduplicated job-posting data from over 200,000 job boards and company career sites, delivered through a REST API and an MCP server for AI agents. Website: https://headcountlabs.com API host: https://api.headcountlabs.com Support: support@headcountlabs.com ## Quick facts - Coverage: about 10.1 million job postings in 237 countries, read from 112 applicant tracking systems and job-board platforms (Workday, Oracle, SmartRecruiters, iCIMS, SuccessFactors, Greenhouse, Lever, Ashby and others) plus companies' own career sites. Per-country and per-platform counts: https://headcountlabs.com/coverage/ - Duplicates of the same opening are merged into one job. Every job links to its original posting and keeps the source fields. - Every job is re-checked daily. Each job carries its status and the dates it was posted, first seen and last checked. - Plans (monthly): free 1,000 jobs; 5,000 jobs $10; 10,000 $18; 20,000 $32; 50,000 $70; 100,000 $125; 250,000 $275; 500,000 $500. API requests on each plan are half its job count. Every job returned counts, including repeats. One price list for the API and the MCP server. - REST API: https://api.headcountlabs.com/v1 (OpenAPI: https://api.headcountlabs.com/openapi). Create an account: https://api.headcountlabs.com/data/signup. API keys: https://api.headcountlabs.com/data/keys - MCP server (Claude, Codex, Cursor and other MCP clients, OAuth sign-in): https://api.headcountlabs.com/mcp - Claude Code: `claude mcp add --transport http headcountlabs https://api.headcountlabs.com/mcp` - Codex: `codex mcp add headcountlabs --url https://api.headcountlabs.com/mcp` - Agent setup playbook: https://headcountlabs.com/get-started.md ("Set up Headcount Labs for me. Fetch https://headcountlabs.com/get-started.md and follow it.") ## Pricing compared Headcount Labs costs 1.8 to 22 times less than the biggest job-data APIs for the same number of jobs a month, with the same kind of data: about 10.1 million postings from 112 platforms in 237 countries, duplicates merged, a link to every original posting, and every job re-checked daily. Monthly list prices for API job records, as listed on each company's pricing page on 7 October 2026. Each competitor figure is the cheapest public plan that delivers at least that many jobs a month; the multiple is that price divided by ours. | Jobs a month | Headcount Labs | TheirStack | Coresignal | Fantastic Jobs | PredictLeads | JobsPikr | |---|---|---|---|---|---|---| | 5,000 | $10 | $100 (10x) | $199 (20x) | $95 (9.5x) | $196 (20x) | $200 (20x) | | 10,000 | $18 | $169 (9.4x) | $199 (11x) | $95 (5.3x) | $296 (16x) | $400 (22x) | | 20,000 | $32 | $240 (7.5x) | $499 (16x) | $95 (3x) | $396 (12x) | $400 (12.5x) | | 50,000 | $70 | $400 (5.7x) | $1,000 (14x) | $175 (2.5x) | $696 (9.9x) | custom quote | | 100,000 | $125 | $600 (4.8x) | $1,000 (8x) | $250 (2x) | $1,196 (9.6x) | custom quote | | 250,000 | $275 | $1,200 (4.4x) | $1,500 (5.5x) | $500 (1.8x) | $1,796 (6.5x) | custom quote | | 500,000 | $500 | $1,200 (2.4x) | $1,500 (3x) | $900 (1.8x) | $2,796 (5.6x) | custom quote | Sources: https://theirstack.com/en/pricing?tab=api (1 API credit per job), https://coresignal.com/pricing/ (Database APIs, 1 credit per job posting), https://fantastic.jobs/api (smallest paid plan 20,000 jobs), https://predictleads.com/pricing (pay as you go at graduated per-credit rates after 100 free credits; a discovery result costs 1 credit per job, while a per-company call can return up to 1,000 jobs for one credit), https://www.jobspikr.com/jobspikr-data-pricing/ (billed-annually prices, the cheapest shown; 1 credit assumed to equal 1 job). Overage on Headcount Labs paid plans costs $3.00 down to $1.50 per 1,000 jobs. The free plan is 500 jobs a month with no card. Details: https://headcountlabs.com/pricing/#compare ## Documentation - [Home](https://headcountlabs.com/): Product overview. - [Documentation](https://headcountlabs.com/docs/): Documentation index. - [Getting started](https://headcountlabs.com/docs/getting-started/): Create an account and make a first request. - [Authentication](https://headcountlabs.com/docs/authentication/): API keys and how to send them. - [API reference](https://headcountlabs.com/docs/api-reference/): Routes, parameters and responses. - [Filters](https://headcountlabs.com/docs/filters/): Every search filter. - [MCP setup](https://headcountlabs.com/mcp/): Connect Claude, Codex, Cursor or any MCP client. - [FAQ](https://headcountlabs.com/faq/): Common questions. ## Data and plans - [Data fields](https://headcountlabs.com/docs/data-fields/): What each field means. - [Freshness](https://headcountlabs.com/docs/freshness/): How often jobs are re-checked and what the dates mean. - [Coverage](https://headcountlabs.com/coverage/): Jobs per country and per platform. - [Sample records](https://headcountlabs.com/sample-data/): Real job records to inspect. - [Pricing](https://headcountlabs.com/pricing/): Plans, request limits and overage prices. - [Terms](https://headcountlabs.com/terms/): Terms of service. - [Privacy](https://headcountlabs.com/privacy/): Privacy information. - [Contact](https://headcountlabs.com/contact/): Sales and support. ## API endpoints Base URL https://api.headcountlabs.com. Send `Authorization: Bearer `. "Uses job credits" means each record returned counts toward your monthly plan, including repeats. Full schema: https://api.headcountlabs.com/openapi - `GET /v1/jobs`: list and search jobs with filters such as q, title, company, location, city, state, country, source, work_arrangement, pay_min, posted_since and updated_since; up to 250 per page. Uses job credits: one per job returned. - `GET /v1/jobs/count`: count jobs matching the same filters as `GET /v1/jobs`. Free: uses no job credits. - `GET /v1/jobs/{jobId}`: one job with all its linked postings; 308 for a merged job, 410 for a withdrawn one. Uses one job credit. - `GET /v1/jobs/changes`: created, updated and expired job events in order, from `since` or a `resume_cursor` passed as `after`; up to 1,000 per page. Uses job credits: one per event returned. - `GET /v1/companies`: browse companies by name; up to 100 per page. Uses credits: one per company returned. - `POST /v1/companies/search`: search companies by name, country and status. Uses credits: one per company returned. - `GET /v1/companies/{companyId}`: one company record. Uses one credit. - `GET /v1/companies/{companyId}/jobs`: a company's jobs, with the same filters as `GET /v1/jobs`. Uses job credits: one per job returned. - `GET /v1/usage/requests`: your account's requests, up to 31 days at a time. Free. - `GET /v1/usage/analytics`: your daily usage totals, grouped by route_class, status_class or api_key_id. Free. Every request counts toward the per-minute request limit (30 a minute on the free plan, 60 on paid plans). ## More documentation - [MCP tools](https://headcountlabs.com/docs/mcp-tools/) ([Markdown](https://headcountlabs.com/docs/mcp-tools.md)): The nine MCP tools with exact names: search_jobs (filters, limit 1-25, cursor, sort, deliver_file with max_jobs up to 5,000, confirmed, descriptions), get_job (job_id, include_source_data), count_jobs (filters), list_fields (keywords), read_file (file_id, offset, limit), get_usage, set_confirmation_level (percent 0-100), set_overage (enabled, monthlyLimitUsd) and search_docs (question). Only search_jobs and get_job use jobs from your plan. Includes a tested answer key of which call to make for common requests (also as JSON: https://headcountlabs.com/docs/mcp-answer-key.json) and the common filter mistakes. - [Rate limits and job credits](https://headcountlabs.com/docs/rate-limits/) ([Markdown](https://headcountlabs.com/docs/rate-limits.md)): 30 requests per 60 seconds on the free plan and 60 on paid plans, shared by all your keys, plus a monthly API request allowance of half the plan's jobs (250 free, 2,500 on the 5,000-job plan), counted per API call and per MCP tool call that fetches jobs. The monthly allowance resets at 00:00 UTC on the 1st; every job, company or change event returned counts. Covers 429 codes rate_limited and data_limit_exceeded, Retry-After, the RateLimit-* and X-Data-Records-* headers, and page sizes. - [Recommended ingestion strategy](https://headcountlabs.com/docs/ingestion-strategy/) ([Markdown](https://headcountlabs.com/docs/ingestion-strategy.md)): First load with GET /v1/jobs (limit=250, next_cursor), then incremental sync with GET /v1/jobs/changes (since, then resume_cursor as after, while has_more). Covers polling cadence, catching up after an outage with event_id and occurred_at, idempotent writes by job_id, and how expired events, currentness and posting_status signal closed jobs. - [Supported platforms](https://headcountlabs.com/docs/platforms/) ([Markdown](https://headcountlabs.com/docs/platforms.md)): Every ATS and job-board platform Headcount Labs reads, with the exact value for the source filter (for example workday, oracle_hcm, greenhouse, lever, ashby), plus exclude_source and source_class. - [Search and location filters](https://headcountlabs.com/docs/search-and-location/) ([Markdown](https://headcountlabs.com/docs/search-and-location.md)): How q, title and the location filters match. location and city are case-insensitive substring matches; country is a two-letter ISO code; state is a subdivision code (US by default, or with country); all location filters must match the same location of a job. - [Timestamps and which date to filter on](https://headcountlabs.com/docs/freshness/) ([Markdown](https://headcountlabs.com/docs/freshness.md)): Which filter reads which field: posted_since (source_posted_at), first_seen_since (job_first_seen_at), updated_since (job_updated_at), curated_since (curated_at), last_fetch_since (last_completed_fetch_at) and application_check_since; currentness and stale. - [Errors and response headers](https://headcountlabs.com/docs/errors/) ([Markdown](https://headcountlabs.com/docs/errors.md)): Every error code with its HTTP status and what to do: invalid_request, invalid_api_key, job_not_found, company_not_found, api_key_not_found, job_withdrawn, report_too_large, rate_limited, data_limit_exceeded, query_timeout, catalog_unavailable, service_unavailable and html_unavailable. - [Pagination and cursors](https://headcountlabs.com/docs/pagination/) ([Markdown](https://headcountlabs.com/docs/pagination.md)): Page sizes per route (jobs 1-250, changes 1-1,000, companies 1-100), next_cursor and resume_cursor rules, and why a cursor from an older snapshot returns 400. - [Backfill a job board](https://headcountlabs.com/resources/backfill-a-job-board/) ([Markdown](https://headcountlabs.com/resources/backfill-a-job-board.md)): Step-by-step: size the backfill with GET /v1/jobs/count, load with GET /v1/jobs, keep it fresh with GET /v1/jobs/changes, and which fields to show (title, employer_name, locations, application_url, attribution). - [Changelog](https://headcountlabs.com/changelog/): Dated product changes: MCP server with OAuth, plans version 2, per-fetch counting, coverage page and terms updates. - [All docs in one file](https://headcountlabs.com/llms-full.txt): The text of every docs page, in Markdown. ## Markdown versions of the docs Every docs page is also served as Markdown at the same path with .md in place of the trailing slash. - [API documentation](https://headcountlabs.com/docs.md) - [API reference](https://headcountlabs.com/docs/api-reference.md) - [ATS pages and job boards](https://headcountlabs.com/docs/ats-vs-job-boards.md) - [Authentication](https://headcountlabs.com/docs/authentication.md) - [Companies endpoints](https://headcountlabs.com/docs/companies.md) - [Company data](https://headcountlabs.com/docs/company-data.md) - [Job and posting fields](https://headcountlabs.com/docs/data-fields.md) - [Source values and derived values](https://headcountlabs.com/docs/enrichment.md) - [Errors and response headers](https://headcountlabs.com/docs/errors.md) - [Job filters](https://headcountlabs.com/docs/filters.md) - [Timestamps and currentness](https://headcountlabs.com/docs/freshness.md) - [Get started with Headcount Labs](https://headcountlabs.com/docs/getting-started.md) - [Recommended ingestion strategy](https://headcountlabs.com/docs/ingestion-strategy.md) - [Counts and returned records](https://headcountlabs.com/docs/job-counts.md) - [Currentness, status, and changes](https://headcountlabs.com/docs/job-lifecycle.md) - [Jobs endpoints](https://headcountlabs.com/docs/jobs.md) - [MCP tools](https://headcountlabs.com/docs/mcp-tools.md) - [Pagination and cursors](https://headcountlabs.com/docs/pagination.md) - [Supported platforms](https://headcountlabs.com/docs/platforms.md) - [Rate limits and job credits](https://headcountlabs.com/docs/rate-limits.md) - [Search and location filters](https://headcountlabs.com/docs/search-and-location.md) - [Plan a safe data sync](https://headcountlabs.com/docs/sync-strategy.md) - [Usage and limits](https://headcountlabs.com/docs/usage-and-limits.md) - [Usage reporting endpoints](https://headcountlabs.com/docs/usage.md) - [Backfill a job board with Headcount Labs](https://headcountlabs.com/resources/backfill-a-job-board.md)