---
title: "Lightcast API: the full menu, the auth flow, and what happened to the free tier"
description: "[NewSearch millions of jobs from your AI agent with MCP→](/blog/jobspipe-mcp-server)"
canonical: https://jobspipe.dev/blog/lightcast-api
last_updated: 2026-09-04
---

[NewSearch millions of jobs from your AI agent with MCP→](/blog/jobspipe-mcp-server)

[All posts](/blog)

![](/listly/card-field.png)

GuideLightcast

Guide·Sep 3, 2026·8 min read

# Lightcast API: the full menu, the auth flow, and what happened to the free tier

There is no single Lightcast API. There is one OAuth server in front of more than thirty scoped services, and a contract decides which ones your token can reach. This guide covers the token flow and scopes, the real shape of the Job Postings API, rate limits, the Postman and MCP tooling, and the change most developers have not noticed: since April 2026 the free Skills tier is for nonprofits only, capped at 50 extractions a month, with commercial use moved to contract terms.

![Dvir Atias](/authors/dvir-atias.jpg)

Dvir Atias

Founder, JobsPipe

Search for the Lightcast API and every result is Lightcast’s own: a marketing menu, a docs portal, an access form, a Postman workspace. That is not a gap in the results, it is the shape of the product. There is no single Lightcast API. There is one OAuth server in front of more than thirty separately scoped services, and which of them your token can reach is decided by a contract, not by a pricing page.

This is the developer view: how the token works, which scopes unlock which services, what the free tier gives you now that it has changed, how the Job Postings API is actually shaped, the rate limits, and the honest place a metered postings API fits next to it. Everything below was read from Lightcast’s own documentation or probed live on the day this post published.

## One auth server, many scopes

Every authenticated Lightcast API uses the OAuth 2.0 client credentials flow against one endpoint. The host still carries the Emsi name from before the rebrand:

```
curl -X POST https://auth.emsicloud.com/connect/token \
  -H "Content-Type: application/x-www-form-urlencoded" \
  -d "client_id=YOUR_ID&client_secret=YOUR_SECRET" \
  -d "grant_type=client_credentials&scope=postings:us"

{"access_token":"<token>","expires_in":3600,"token_type":"Bearer"}
```

Tokens last one hour, and the docs ask you to cache them for the full `expires_in` rather than minting one per call. The `scope` field is space-delimited and it is the whole access model. The scopes you will meet most:

-   `lightcast_open_free` - the open tier for the Skills and Titles APIs.
-   `emsi_open` - the expanded tier for the same two APIs, and the scope most community client libraries default to.
-   `classification_api` or `lightcast_open` - the Classification API, where taxonomy lookups, skill extraction and title normalisation live.
-   `postings:us`, `postings:global` - the Job Postings APIs, one scope per regional dataset, with UK and Canada variants alongside.
-   `profiles:us` - the anonymised worker profiles API.

Send junk credentials and the token endpoint answers `400 invalid_client`, which is exactly what it gave me when I probed it. The live services sit at `api.lightcast.io` - `/skills`, `/jpa` for US postings, `/global-postings` - while the older `emsiservices.com` hosts still answer, with a 401, on every path.

## What happened to the free tier

For years the self-serve answer was “register for Open Skills, get a client ID, call the Skills API for free with attribution”. We wrote that ourselves in our [skills taxonomy comparison](/blog/skills-taxonomy). It is no longer accurate, and Lightcast says so in two places.

The access page in the developer docs, revised in April 2026, now splits access in two. **Public-good access** is free for nonprofits and public-sector or community initiatives, subject to approval. **Commercial access** - any for-profit or production use - requires a licence, requested through the same form and routed to a sales representative, with time-bound test access offered while you evaluate. The Open Skills FAQ answers the question directly: the taxonomy remains fully browsable, and “API access is now available on a contract basis.”

What the free tier contains, per that page:

-   the Skills Taxonomy through the Classification API - 33,000+ skills with IDs, descriptions, types and the category hierarchy;
-   skill extraction from text, capped at **50 extraction calls per month**;
-   delivered on the `lightcast_open_free` scope, explicitly “not intended for production-scale workloads”.

What it excludes is the list that matters if you were planning a product on it: the Titles and Occupation taxonomies, cross-dataset relationships, and any production volume. Skill descriptions, where present, come from Wikipedia under CC BY-SA, so the attribution requirement survived even where the free access did not.

## The menu behind the menu

Lightcast’s API menu page names its products in marketing groups; the developer docs document more than thirty services separately. The ones a data team will care about:

-   **Taxonomies.** Skills (versioned monthly, `latest` as an alias; English, Spanish and French), Titles (75,000+ titles, English only, normalise a raw string to a canonical one, with SOC and skill mappings behind an extra permission), and Classification, which maps between taxonomy versions and runs the classifiers: classify a posting to a specialised occupation, extract skills, normalise up to 500 titles or company names per request.
-   **Job Postings.** Separate US, UK, Canada and Global datasets plus a company-direct variant. The Global service documents monthly data back to January 2012.
-   **Profiles.** Anonymised worker profiles, a global variant, and a version with contact information.
-   **Modelled products.** Talent Benchmark and Occupation Benchmark, Career Pathways, Similarity, Projected Occupation and Skill Growth, Salary-Boosting Skills, Compensation and Market Salary, an Occupation Automation Index, Cost of Living, plus Core LMI for government statistics.

None of these carries a public price. Lightcast quotes per contract, and we unpicked what drives the number in [Lightcast pricing](/blog/lightcast-pricing). Bulk delivery is a separate track: Data Shares into S3, Google Cloud Storage, Azure Blob, SFTP, BigQuery, Databricks and Snowflake, and listings on the Snowflake and Databricks marketplaces.

## The Job Postings API, as it is actually shaped

This is the service most readers mean when they say “Lightcast API”. It is an analytics API first and a postings API second. Every request carries a `filter` object with one required key, `when`, which is either the string `"active"` or a start and end date. Taxonomy filters come in pairs, by ID or by exact name, and the verbose form takes include and exclude lists with their own operators. This is the documented example:

```
{
  "when": { "start": "2018-01-01", "end": "2018-04-01" },
  "skills_name": {
    "include": ["SQL (Programming Language)", "C++ (Programming Language)"],
    "include_op": "and",
    "exclude": ["Java (Programming Language)", "C Sharp (Programming Language)"],
    "exclude_op": "or"
  }
}
```

Names must match exactly, capitalisation and punctuation included - `SQL (Programming Language)`, not `SQL` - which is why the docs steer you to pull valid values from `/taxonomies` or a rankings call first. The endpoint families are the same across the regional datasets: `/totals` for summary metrics, `/timeseries` broken out monthly or daily (daily capped at 90 days), `/rankings/{facet}` to group and rank by company, skill, title or geography, nested rankings, `/distributions` for salary and experience percentiles, and finally `/postings` for individual records.

That last one is the tell. The individual-postings endpoint warns that not all fields are present, that `url` is returned only for currently active postings, and that if you need more postings than it returns you should contact Lightcast. The product is built to answer “how many, trending which way, ranked by what”; row-level retrieval of live ads is a negotiated extra, not the default.

## Rate limits and quotas

-   Most APIs: 10 requests per second. Skills, Titles and Companies: 5. Core LMI: 300 requests per five minutes.
-   The US and Global postings overviews say 5 per second by default while the rate-limits page says 10 - plan for 5 and ask your representative.
-   Several Classification endpoints (classify, extract, normalise) note a base-tier quota of 50 requests per month; other quotas are “usage-based” and disclosed by your account manager, not in the docs.
-   A 429 means you are over. The docs also list 413 and 422 for oversized and semantically invalid bodies, both easy to hit with long extraction texts and misspelled taxonomy names.

## Tooling: Postman, llms.txt and an MCP server

Three things make the integration less painful than the access model suggests. Lightcast keeps a public Postman workspace with authentication flows and sample payloads for the common APIs. The docs portal publishes an `llms.txt` index and a Markdown twin of every page - append `.md` to any URL - which is how the facts in this post were pulled. And there is a community MCP server, `lawwu/mcp-lightcast`, MIT-licensed, exposing 23 tools across the Skills, Titles, Classification, Similarity, Benchmark, Career Pathways and Job Postings APIs. It reads a client ID and secret from environment variables and defaults its scope to `emsi_open`, so it inherits whatever your contract allows and nothing more.

## Where a metered postings API fits

Lightcast is the right answer for the decade-long trend report and the taxonomy licence. It is the wrong shape for a product that needs this week’s live postings, filtered by skill and occupation, from a key you can get today. That is the gap JobsPipe was built for, and the two are complementary more often than competitive - see [Lightcast alternatives](/blog/lightcast-alternatives) for the fuller map.

The design difference is deliberate. JobsPipe does not sell a taxonomy. It normalises every posting on the way in - ISCO-08 occupation, ISIC Rev.4 industry, and a compact curated skills dictionary of 452 entries, 39 of them flagged as AI skills - and exposes those as filters and as aggregate endpoints. On the day this post published, 88.6% of live postings in the index carried at least one normalised skill.

The aggregate layer answers the Lightcast-style question without a contract. One call, one credit:

```
curl "https://api.jobspipe.dev/v1/insights/technology/ai-exposure?by=occupation&window_days=90" \
  -H "Authorization: Bearer jp_live_YOUR_KEY"
```

Measured live against the same index today: 8.8% of all active postings ask for at least one AI skill. Among Software Developers (ISCO 2512) it is 41.2%; among Mathematicians, Actuaries and Statisticians 55.7%; among Managing Directors and Chief Executives 10.8%; among Lawyers 8.4%; among Nursing Professionals 1.8%. The same shape exists for top skills per occupation, one skill’s trend over time, and a salary benchmark by code or title.

And the row-level layer is the default, not the negotiated extra:

```
curl -X POST "https://api.jobspipe.dev/v1/jobs/search" \
  -H "Authorization: Bearer jp_live_YOUR_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "occupation_code_or": ["2512"],
    "skills_or": ["machine-learning", "pytorch"],
    "job_country_code_or": ["US"],
    "posted_at_max_age_days": 14,
    "limit": 25
  }'
```

Skills are lowercase slugs rather than exact display names, so `machine-learning` matches however the employer spelled it. Records come back with the company and its domain, the original listing URL, salary fields where the ad published one, and a status plus close date. The free tier returns 1,000 jobs a month and insights calls cost one credit each. If you need a skills taxonomy but not a contract, the [ESCO API](/blog/esco-api) and the [O\*NET API](/blog/onet-api) are the free, institution-backed alternatives.

## So which path is yours

-   **A nonprofit or public-sector team exploring skills.** Apply for public-good access. Expect the Skills Taxonomy through the Classification API, 50 extractions a month, and no titles or occupations.
-   **A commercial product that needs the Lightcast taxonomy.** Budget for a licence and a sales cycle; test access is time-bound. Read the pricing teardown before the first call.
-   **Analysts who need historical postings trends.** The Job Postings API is what you want, by region, and Data Shares if your warehouse is the destination.
-   **Developers who need live postings now.** A metered postings API with normalised occupations and skills, a key in 30 seconds, and aggregate endpoints for the trend questions.

Live postings with ISCO occupations, normalised skills and AI-exposure insights - no contract, API key in 30 seconds.

[

← Previous

Textkernel review: the parser credits, the Jobfeed API, and what changed under Bullhorn

](/blog/textkernel-review)[

Next →

Wellfound API: why every result points inward, and how to get startup job data

](/blog/wellfound-api)

---
Canonical URL: https://jobspipe.dev/blog/lightcast-api
Title: Lightcast API: the full menu, the auth flow, and what happened to the free tier
Description: There is no single Lightcast API. There is one OAuth server in front of more than thirty scoped services, and a contract decides which ones your token can reach. This guide covers the token flow and scopes, the real shape of the Job Postings API, rate limits, the Postman and MCP tooling, and the change most developers have not noticed: since April 2026 the free Skills tier is for nonprofits only, capped at 50 extractions a month, with commercial use moved to contract terms.

---
AI agents: the full machine-readable index of this site is https://jobspipe.dev/llms.txt?src=md-twin - API quickstart, no-key sandbox (POST https://api.jobspipe.dev/v1/sandbox/jobs/search), MCP server, pricing. Free key: https://jobspipe.dev/signup