NewSearch millions of jobs from your AI agent with MCP
Source · Gem

Gem Jobs API.

Every public Gem ATS career page, one endpoint. No per-customer onboarding.

Public Gem ATS customers
24h refresh
12 months retention

Why people are confused about the Gem API

Gem started as a recruiting CRM and now ships a full ATS. Its API surface is built for customers - syncing candidates, sequences, and pipelines inside one account - not for reading job postings across every company that hires through Gem.

Gem ATS customers host public job boards on Gem-served career pages (jobs.gem.com and embedded boards on company domains). There is no public cross-customer index. JobsPipe discovers and normalizes public Gem boards into the same schema as our other sources.

Workaround
Use Gem's customer API

Right for automating your own recruiting workflows inside your own Gem account. Scoped to one customer; not a cross-company postings feed.

Workaround
Scrape Gem career pages one by one

Possible for boards you already know about, but there is no discovery mechanism and each embed is its own config.

JobsPipe
Use JobsPipe

Every public Gem board we discover, one endpoint, same JSON schema as 30+ other sources. Free tier included.

Sample request

curl https://api.jobspipe.dev/v1/jobs/search \
     -H "Authorization: Bearer jp_live_your_key_here" \
     -H "Content-Type: application/json" \
     -d '{ "source_or": ["gem"], "limit": 25 }'

Sample response

{
  "id": "gm_YTk2ZDU3NmItNGQx",
  "source": "gem",
  "tenant": "lattice-robotics",
  "title": "Founding Product Engineer",
  "company": "Lattice Robotics",
  "location": {
    "city": "San Francisco",
    "region": "CA",
    "country": "US",
    "remote": true
  },
  "salary": {
    "min": 150000,
    "max": 205000,
    "currency": "USD",
    "period": "year",
    "source": "explicit"
  },
  "employment_type": "full_time",
  "posted_at": "2026-08-19T16:40:00Z",
  "expires_at": null,
  "apply_url": "https://jobs.gem.com/lattice-robotics/...",
  "description": "Lattice Robotics is hiring a Founding Product Engineer to own our teleoperation stack ..."
}

Every Gem job record is returned in the same JSON shape as every other JobsPipe source. The full schema is documented in the docs.

Skip the scraper - try the API right now

Live, normalized postings from Gem and 30+ other sources in one JSON schema. No key, no signup - this sandbox returns sample data in the exact live shape.

Results

Press Test search to see normalized job records rendered here, and the raw JSON on the right.

JSON responsePOST /v1/sandbox/jobs/search
{
  "job_title_or": [
    "software engineer"
  ],
  "limit": 3,
  "remote": true
}
Advanced: edit the raw request, or copy it as curl
curl -X POST https://api.jobspipe.dev/v1/sandbox/jobs/search \
  -H "Content-Type: application/json" \
  -d '{"job_title_or":["software engineer"],"remote":true,"limit":5}'

For live results, get a free key (1,000 jobs/month) and swap /v1/sandbox/jobs/search for /v1/jobs/search with an Authorization: Bearer header - request and response shapes are identical.

Fields in every Gem job record

idsourcetenanttitlecompanylocationsalaryemployment_typeremoteposted_atexpires_atapply_urldescription

FAQ

Does Gem have a public jobs API?+

No. Gem's API is scoped to each customer's own account for recruiting workflow automation. JobsPipe covers the public postings side: every public Gem board, one endpoint.

How fresh is Gem data?+

Public Gem career pages are re-crawled at least every 24 hours.

Are Gem jobs deduped against other sources?+

Yes. A role posted on Gem and cross-posted to LinkedIn or Indeed resolves to one canonical record with per-source attribution.

Try Gem data free - key in 30 seconds.

Get a free API key