---
title: "Lightcast API: the full menu, the auth flow, and what happened to the free tier"
description: "There is no single Lightcast API: one OAuth server sits in front of more than thirty scoped services, and your contract decides which ones your token can reach."
canonical: https://jobspipe.dev/blog/lightcast-api
date_published: 2026-09-03
date_modified: 2026-09-30
author: Dvir Atias
---

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

There is no single Lightcast API: one OAuth server sits in front of more than thirty scoped services, and your contract decides which ones your token can reach. Since April 2026 the free Skills tier is for nonprofits and public-good projects only, capped at 50 extraction calls a month, while commercial use needs a licence. Tokens last one hour, and most APIs allow 10 requests per second.

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.

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.

Try it without a key

```
curl -d '{"limit":3}' https://api.jobspipe.dev/v1/sandbox/jobs/search
```

Only `/v1/sandbox/*` needs no key.

## 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](https://jobspipe.dev/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](https://jobspipe.dev/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](https://jobspipe.dev/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. On the day this post published, 88.6% of live postings in the index carried at least one normalised skill.

The same index answers the Lightcast-style aggregate question. Measured live 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 salary benchmark by code or title is a public endpoint; occupation, industry, skill-trend and AI-exposure breakdowns are available on request - [book a demo](https://jobspipe.dev/book) and we'll walk you through the data.

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 to start and insights calls cost one credit each. If you need a skills taxonomy but not a contract, the [ESCO API](https://jobspipe.dev/blog/esco-api) and the [O\*NET API](https://jobspipe.dev/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, a salary benchmark endpoint, and trend breakdowns on request.

Where a postings API can stand in for Lightcast and where it cannot is set out on [JobsPipe vs Lightcast](https://jobspipe.dev/alternatives/lightcast).

## Sources

-   [Lightcast API: access options to Skills](https://docs.lightcast.io/lightcast-api/docs/api-access)
-   [Lightcast API: authentication guide](https://docs.lightcast.io/lightcast-api/docs/authentication-guide)
-   [Lightcast API: rate limits and quotas](https://docs.lightcast.io/lightcast-api/docs/rate-limits-and-quotas)
-   [Lightcast Job Postings US API overview](https://docs.lightcast.io/lightcast-api/reference/overview-us-job-postings)

## Frequently Asked Questions

### Is the Lightcast API free?

Not for commercial use any more. Since April 2026 Lightcast splits access in two: public-good access, free for nonprofits and public-sector or community initiatives subject to approval, and commercial access, which requires a licence arranged through a sales representative with time-bound test access. The free tier covers the Skills Taxonomy through the Classification API and skill extraction capped at 50 calls a month, on the lightcast\_open\_free scope, which is described as not intended for production-scale workloads.

### How do I authenticate to the Lightcast API?

Every authenticated Lightcast API uses the OAuth 2.0 client credentials flow against one token endpoint, https://auth.emsicloud.com/connect/token, which still carries the pre-rebrand Emsi host name. You post a client\_id, client\_secret, grant\_type=client\_credentials and a space-delimited scope such as postings:us, and get back a Bearer token that lasts one hour. The docs ask you to cache it for the full expires\_in rather than mint one per call. Bad credentials return 400 invalid\_client.

### Can I pull individual job postings from the Lightcast Job Postings API?

Only as a secondary feature. The API is analytics-first: the endpoint families are /totals, /timeseries, /rankings, /distributions and finally /postings for individual records. The 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. Row-level retrieval of live ads is a negotiated extra rather than the default.

Related

## Keep reading

-   [Guide · Sep 1, 2026France Travail API: the free French jobs API, and its 1,150-result window](https://jobspipe.dev/blog/france-travail-api)
-   [Guide · Aug 22, 2026RemoteOK API: the free remote-jobs feed, and its 100-job window](https://jobspipe.dev/blog/remoteok-api)
-   [Guide · Jul 27, 2026O\*NET API: free occupational data from the Department of Labor](https://jobspipe.dev/blog/onet-api)
-   [Reference · Aug 11, 2026ESCO API: the EU's free skills and occupations API, explained for developers](https://jobspipe.dev/blog/esco-api)
-   [Comparison · Jul 25, 2026Free job APIs in 2026: what's actually free, what's free-tier, and what's a trap](https://jobspipe.dev/blog/free-job-api)


## Further reading

- [What is Lightcast API?](https://jobspipe.dev/answers/what-is-lightcast-api)
- [Is Lightcast worth it?](https://jobspipe.dev/answers/is-lightcast-worth-it)
- [Why Do You Need an MCP Server?](https://jobspipe.dev/blog/why-do-you-need-an-mcp-server)
- [What is an MCP server? How MCP works, with a real example](https://jobspipe.dev/blog/what-is-an-mcp-server)

---
Try it with no key: `curl -d '{"limit":3}' https://api.jobspipe.dev/v1/sandbox/jobs/search`. AI agents: the full machine-readable index of this site is https://jobspipe.dev/llms.txt?src=md-twin - API quickstart, MCP server, pricing. Free key (1,000 jobs to start): https://jobspipe.dev/signup