Recruitee Jobs API: Job Listings by Company
Pricing
from $0.90 / 1,000 job listings
Recruitee Jobs API: Job Listings by Company
Get job listings from public Recruitee careers sites as JSON or CSV. Enter company names, then filter by keyword, department, country, remote and age, or get only new jobs since your last run. $1.20 per 1,000 jobs. Independent tool, not affiliated with Recruitee.
Pricing
from $0.90 / 1,000 job listings
Rating
0.0
(0)
Developer
Don Mangu
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
3 days ago
Last modified
Categories
Share
Use this Recruitee jobs API to get job listings from public Recruitee careers sites as JSON, CSV or Excel, for $1.20 per 1,000 jobs. Enter company names such as grid or bunq, filter by keyword, department, country, city, remote flag, employment type and age, or switch on Only new jobs since last run and schedule the Actor to get a daily feed of fresh jobs. It needs no login, no API key and no proxy.
The Actor reads the public JSON that every Recruitee careers site publishes at https://company.recruitee.com/api/offers/. It is an unofficial tool built by an independent developer. It is not affiliated with, endorsed by or operated by Recruitee or Tellent.
What this Recruitee jobs API returns
One row is one open job. The fields are:
- Company (the subdomain), company name, job ID and title.
- Department, location text, city, country, country code and the list of all locations of the job.
- Remote flag and workplace types: remote, hybrid and onsite, as the company ticks them.
- Employment type, experience level and category, as Recruitee codes such as
fulltime_permanent,mid_levelandinformation_technology. - Tags that the company set on the job.
- Salary minimum, maximum, currency and period, when the company publishes a range. Most Recruitee jobs list no salary.
- Posted at, updated at and closes at, in ISO 8601 UTC.
- Job URL and apply URL on the company careers site.
- Description text, only when you switch on Include job description. Email addresses, phone numbers and links to personal profiles are replaced by a marker.
The Actor never outputs the application form questions or the mailbox address that Recruitee creates for a job.
How it differs from our other jobs Actors
Live Career Page Jobs API reads 22 applicant tracking systems with one general input and one general output. This Actor does one system, Recruitee, and keeps its details: the list of every location, the workplace types, experience level, salary range, company name, a department, country, city and employment type filter, a limit per company, a link to a single job, and a named monitor for new jobs. Use the general one to cover many systems. Use this one when your list of companies is on Recruitee and you want clean, filtered rows.
How to get Recruitee jobs, step by step
- Open the Actor and go to Input.
- Under Companies, enter one company per line. Write the subdomain (
grid) or paste any URL of the careers site (https://grid.recruitee.com/). A URL of one job (https://grid.recruitee.com/o/support-operator-latam-mfx) returns that job only. - Optional: enter Keywords, Departments, Countries (name or two-letter code), Cities, Employment types, or a number under Posted within days. Switch on Remote jobs only to keep jobs that the company marks as remote.
- Optional: switch on Only new jobs since last run and give the feed a Monitor name. The first run returns every matching job and sets the baseline. Later runs return only jobs that this Monitor name did not deliver before.
- Set Max jobs per company and Max results. The prefill is 5 and 5, so a first test costs under one cent.
- Click Start. Open the Jobs view of the dataset, or download it as JSON, CSV or Excel, or read it through the Apify API.
- For a daily feed, create a schedule for the Actor with the same input and the same Monitor name.
A careers site on a custom domain, such as careers.bunq.com, shows the same jobs as the subdomain bunq.recruitee.com. Enter the subdomain. The Actor cannot find the subdomain from a custom domain by itself.
The Actor sends one request at a time, at least one second apart, with one request per company. Recruitee publishes no rate limit for this endpoint. The Actor honours a Retry-After header and retries a failed request up to 3 times with growing waits. It does not solve CAPTCHAs and does not use proxies.
Recruitee jobs API pricing
You pay per job returned. The event is called Job listing.
- $0.0012 per Job listing, which is $1.20 per 1,000 jobs.
- A small start fee of $0.00005 per run.
- Discounts on higher Apify plans: $0.0011 (Bronze), $0.0010 (Silver), $0.0009 (Gold) per job.
Worked example: a run that returns 100 jobs costs 100 x $0.0012 + $0.00005 = $0.12005. A daily run with Only new jobs that finds 12 new jobs costs 12 x $0.0012 + $0.00005 = $0.01445, so 30 such runs cost $0.4335 (the 12 jobs a day is an example, not a measured value). The test run in this README returned 9 jobs and cost 9 x $0.0012 + $0.00005 = $0.01085. A run that finds no job costs only $0.00005. A company that cannot be read (wrong name, closed API) returns no rows and costs nothing. Only saved rows are charged. Set Max results or a maximum charge per run to cap the cost.
Input example
This is the input of a real test run on 11 October 2026 against the live careers site of grid.recruitee.com:
{"companies": ["grid"],"maxJobsPerCompany": 5,"maxResults": 5}
It returned 5 rows in about one second, newest first. Two of them:
| Title | Department | Posted |
|---|---|---|
| Support Operator LATAM (m/f/x) | Support | 2026-10-09 |
| Match Administrator | Operations | 2026-10-05 |
The other three rows were jobs of the department Trading.
A second test run used four entries: grid, https://bunq.recruitee.com/, kramp and nosuchcompany-zz9, with Posted within days 14, Max jobs per company 5 and Only new jobs on. It returned 9 jobs. The company kramp had switched off its public API and nosuchcompany-zz9 does not exist, so the run status named both as not read and charged nothing for them. The same input run again returned the 2 jobs that the first run had cut off with the limit of 5 per company, and none of the 9 delivered ones.
Output example
The input below returns one job with its text. It is a real row from the live site on 11 October 2026. The text of the description is shortened here to 160 characters for this page.
{"companies": ["https://grid.recruitee.com/o/support-operator-latam-mfx"],"includeDescription": true}
{"source": "Recruitee","company": "grid","companyName": "GRID eSports GmbH","jobId": "2778516","title": "Support Operator LATAM (m/f/x)","department": "Support","location": "Remote job","city": "Buenos Aires","country": "Argentina","countryCode": "AR","locations": ["Buenos Aires, Argentina","São Paulo, Brazil","Lima, Peru"],"remote": true,"workplaceTypes": ["remote"],"employmentType": "fulltime_permanent","experienceLevel": "mid_level","category": "information_technology","tags": ["LATAM","Remote"],"salaryMin": null,"salaryMax": null,"salaryCurrency": null,"salaryPeriod": null,"postedAt": "2026-10-09T13:23:04.000Z","updatedAt": "2026-10-09T13:41:08.000Z","closesAt": null,"url": "https://grid.recruitee.com/o/support-operator-latam-mfx","applyUrl": "https://grid.recruitee.com/o/support-operator-latam-mfx/c/new","descriptionText": "- Do you enjoy helping customers with complex issues?\n- Are you a champion of customer-first processes?\n- Do you have an interest in competitive video gaming? ...","retrievedAt": "2026-10-11T08:43:49.844Z"}
Run it every day
Use this to get a feed of fresh Recruitee jobs once a day.
- Enter your companies and filters.
- Turn on Only new jobs since last run (
onlyNew). - Give the feed a Monitor name (
monitorName). Use one name for each set of companies and filters. - Save the input as a task and add a daily schedule with the same input and the same Monitor name.
The first run returns every matching job and sets the baseline. Each later run returns only jobs that the Monitor name did not deliver before. Example: 12 new jobs a day cost 12 x $0.0012 + $0.00005 = $0.01445 a day, so 30 daily runs cost $0.4335 (the 12 jobs a day is an example, not a measured value).
Related Actors
- Live Career Page Jobs API: jobs from 22 applicant tracking systems with one input.
- SmartRecruiters Jobs API: jobs from public SmartRecruiters career sites.
- Teamtailor Jobs API: jobs from public Teamtailor career sites.
- Greenhouse Jobs API: jobs from public Greenhouse job boards.
FAQ
Is it legal to read Recruitee careers sites this way?
This is not legal advice. The endpoint answers without a login or a key today, and the careers sites of Recruitee customers use it to show jobs to visitors. Recruitee's customer terms and conditions (versions of October 2023 and April 2024) say that the careers site is meant "to provide the public with a list of job opportunities" and that the use of the careers site "is not intended to be private". They contain no sentence on scraping or automated reading. A Recruitee support article says "The Careers Site API requires authentication", and the API documentation announces a token for calls from 10 February 2027 (see the next question). Read those two statements before you build a product on this data. The robots.txt of a careers site subdomain (grid.recruitee.com, read on 11 October 2026) holds only "Disallow: /v/", which does not cover /api/offers/. The job text belongs to each company. Link to the job URL when you show a job, and do not present the text as your own.
Will it keep working?
Recruitee's documentation says: "Deadline for introducing the token to calls is 10 February 2027." Today the endpoint answers without a token, as the test runs show. After the deadline Recruitee can answer HTTP 401 to calls without a company-issued token. The Actor then stops at once, says so in the run status and charges nothing. If you read your own company's careers site, you can enter your own Careers API token in the Advanced field. The token covers only the company that issued it. The Actor cannot read other companies without their tokens.
Does the output hold personal data?
No. The Actor does not output names, emails or phone numbers of people. It replaces email addresses, phone numbers and personal profile links in the job text with a marker. It does not output the application form or the mailbox address of a job. Company names are public business data.
How does Only new jobs since last run work?
The Actor keeps a list of delivered jobs in a key-value store in your Apify account, named recruitee-jobs-state, one list per Monitor name. A job counts as delivered after it is saved in the dataset. A job that was cut off by Max results or Max jobs per company stays new for the next run. The list forgets a job 90 days after it left the careers site. Use one Monitor name for each set of companies and filters.
How many companies can I read in one run?
Up to 300. The Actor waits one second between requests, so 300 companies take about five to six minutes.
How do I find the subdomain of a company?
Open the careers page of the company. If its jobs link to an address like https://company.recruitee.com/o/job-name, the subdomain is company. Many companies use a custom domain on the careers page but keep the recruitee.com link on each job.
Why does a company return no rows?
Check the run statistics (the STATS record). It lists each company with a status: ok, not_found (no Recruitee site with that name), api_disabled (the company switched off the public API) or an error text. If the status is ok and the rows are missing, the filters removed the jobs, or the company has no open jobs.
What does location Remote job mean?
Recruitee shows the text Remote job as the location of a job that the company marks as remote. The list in the field locations holds the real places that the company lists for the job.