PARTNER API BETA · FREE

Fresh jobs from employer career sites, one API call away

The same feed behind Referso Jobs: 100k+ new jobs a day read straight from 59 applicant tracking systems, cleaned, enriched and ready for your job board, app or data pipeline.

Read the docs
new jobs a day
100k+
ATS crawled
59
freshness windows
1h–7d

Crawled fromWorkday·iCIMS·Greenhouse·Lever·SmartRecruiters·SuccessFactors·Oracle Cloud·Ashbyand more

What you get

Everything a job board needs, without running crawlers

We keep thousands of career sites crawled, deduplicated and normalized into one schema. You make HTTP requests.

  • Straight from career sitesRead directly from employers' own ATS pages (Workday, iCIMS, Greenhouse, Lever and 55 more), not reposted from other boards.
  • Filters that matterTitle, country, work mode, employment type, experience, salary, visa sponsorship, education, company and ATS, with excludes.
  • Cleaned and enrichedSalary range and period, seniority, required skills, education, industry, normalized locations, company logo and domain.
  • Expired-jobs feedA separate endpoint lists the IDs of jobs that closed, so your board never shows a dead posting.
  • Built for syncAsk for only what's new (1h to 7d) and page through it with a cursor. Run it on a schedule and you're done.
  • Plain text or HTMLGet descriptions as plain text or with the employer's original HTML formatting, via description_format.
How it works

From request to first sync

  1. 1
    Request accessTell us who you are and what you're building. It takes a minute.
  2. 2
    We review itOur team reads every request, so keys go to real projects.
  3. 3
    Get your key by emailOnce approved, your API key arrives in your inbox. Keep it on your server, never in a browser app.
  4. 4
    Sync on a scheduleCall list-jobs every hour or so with cursor, and check list-expired-jobs to drop closed jobs.
One endpoint

One request, clean JSON back

Two GET endpoints, one header with your API key. New and updated jobs come from list-jobs; jobs that closed come from list-expired-jobs.

  • GET/Integration/v1/list-jobs
  • GET/Integration/v1/list-expired-jobs
  • HEADERx-referso-crawler-api-key: <key>

Key parameters

job_titles
Title search; wrap in quotes for an exact phrase
country
Full country names, comma-separated
added_within
1h, 6h, 12h, 24h or 7d
workplace_type
ONSITE, HYBRID or REMOTE
employment_type
FULL_TIME, PART_TIME, CONTRACT, INTERNSHIP, TEMPORARY
experience_level
Years of experience: 0-2, 2-5, 5-10, 10+
has_salary · visa_sponsorship · education
Only jobs that match
company · company_website · source
One employer, one domain or one ATS
exclude_company · exclude_source
Leave employers or ATS out
posted_after · posted_before
Employer's posting date range
cursor
Start at 0, then pass next_cursor (or use limit/offset)
Full reference in the docs
list-jobs
200 OK

Request

curl -G https://api.crawler.referso.com/Integration/v1/list-jobs \
  -H "x-referso-crawler-api-key: $KEY" \
  -d cursor=0 \
  -d added_within=24h \
  -d country="United States,Canada" \
  -d workplace_type=REMOTE

Response (trimmed)

{
  "jobs": [{
    "id": 33961327,
    "job_title": "Senior Data Engineer",
    "company_name": "Northwind Labs",
    "company_domain": "northwindlabs.com",
    "location_city": ["Austin"],
    "location_state": ["Texas"],
    "location_country": ["United States"],
    "workplace_type": "REMOTE",
    "employment_type": "FULL_TIME",
    "seniority_level": "SENIOR",
    "min_salary": 150000,
    "max_salary": 180000,
    "salary_currency": "USD",
    "salary_period": "YEAR",
    "visa_sponsorship": false,
    "required_skills": ["Python", "Spark", "dbt"],
    "main_industry": "Software & Internet",
    "source": "GREENHOUSE",
    "source_url": "https://boards.greenhouse.io/…",
    "posted_date": "2026-11-04T07:12:00Z",
    "job_description_plain": "About the role…"
  }],
  "has_more": true,
  "next_cursor": "MjAyNi0xMS0wNFQw…"
}
Pricing

Free while we're in beta

Fair-use rate limits per minute and per hour. No cap on how many jobs you fetch.

Beta plan Open now
$0per monthfor as long as the beta runs
  • Fair-use rate limitsPer minute and per hour, per key
  • Unlimited total jobsNo daily or monthly quota
  • Every filter and fieldIncluding the expired-jobs feed
  • Human supportEmail the people who run the crawler

Every request is reviewed by our team. Your API key arrives by email once it's approved.

Coming later
Paid plans

For teams that need more. No prices yet: we'll shape them with our beta partners.

  • Higher per-minute and per-hour limits
  • Priority support and SLAs
  • Custom feeds for your niche

Beta partners hear first. We'll email you well before anything changes, and nothing is charged without your agreement.

FAQ

Questions partners ask

Is it really free?
Yes. During the beta the API costs nothing: no card, no trial clock. You only need an API key: request access, our team reviews it, and we email you the key once it's approved.
What are the limits?
Requests are rate limited per minute and per hour, per key. There is no daily or monthly quota on jobs: page through as many as you need.
What happens when I hit the limit?
You get HTTP 429 Too Many Requests. Wait and retry, honouring the Retry-After header when it's present. Nothing is lost: your cursor stays valid.
Will it stay free?
Paid plans will come later, likely with higher limits and support options. Beta partners will hear from us well before anything changes, and nothing is charged without your agreement.
How fresh is the data?
We crawl employer career sites all day and add 100k+ new jobs every day. Use added_within (1h to 7d) to fetch only what's new, and list-expired-jobs to remove jobs that closed.
Can I use it commercially?
Yes, within our Terms. Build job boards, career apps, alerts or analytics on top of it. The one thing we ask you not to do is resell the raw feed as a competing job-data API.

Put fresh jobs in your product this week

  • Free during the beta
  • Reviewed by our team
  • API key by email
Read the docs