- Documentation
- Resources
Support
How to get help, what to include, and answers to the questions that come up most.
Getting help#
| Topic | Contact |
|---|---|
| Technical questions, bugs, wrong data | [email protected] |
| Plans, billing, custom limits, flat-file delivery | [email protected] |
| Security disclosure | [email protected] |
| Data protection / GDPR | [email protected] |
What to include#
A good report is one we can reproduce. Send:
- The full request URL, with your API key redacted.
- The response — status code and body. For a
500, themessagefield is the server's own exception text and usually identifies the problem outright. - What you expected versus what you got.
- A job or company id if the issue is about specific data.
Never send us your API key
Support will never ask for it, and there's nothing we could do with it that we can't do from your account. If you've pasted a key anywhere it shouldn't be — a ticket, a screenshot, a repo — revoke it and create a new one.
Common questions#
My filter returns zero results and I'm sure it shouldn't
First: did you get a 200? Invalid parameters and enum values
return a 400 naming the parameter, so a typo can't hide.
On a genuine 200 with zero rows, the usual suspects:
skillcommas mean AND.skill=python,awsneeds both — it's the one filter where comma isn't OR.- A displayed skill fed back as a filter.
skill=Machine Learning→ 0 rows. It'smachinelearning. - An over-tight combination. Every parameter still ANDs with the
others; drop them one at a time and watch
total(or use/v1/jobs/count).
The filtering guide has the full procedure.
Where's the description field?
Omitted by default — the key is absent, not null. Add
description_format=text or description_format=html. It's opt-in because
descriptions are multi-kilobyte and most callers don't want 200 of them per
page. See the Job object.
I'm getting 401 with a key I know is correct
If it's from browser JavaScript, it's the CORS preflight: an Authorization
header makes the request non-simple, and there's no OPTIONS handler. Use
?api_key= from browsers — but see
why you shouldn't call the API from a browser at all.
Otherwise: the key may be revoked, or you may be sending a key from a
different account. 401 covers missing, malformed, unknown, and revoked
without distinguishing.
A job I fetched yesterday now 404s
Expected. Postings are reaped when they disappear from the employer's board,
and /v1/jobs excludes anything expired. It may also have been marked as a
duplicate of an equivalent posting from another source. See
duplicates.
If you keep a local mirror, treat a 404 on a previously-seen id as a
delete. Syncing the feed covers this.
The counts from /v1/health and /v1/meta don't match
Both are correct. /v1/health counts every row including duplicates and
expired postings; /v1/meta counts only live, non-duplicate ones. /v1/meta
is the number you want. See coverage.
Requests are slow
Usually description=, which scans every description in the dataset. Pair it
with a narrower filter. Also check you're not fetching descriptions you don't
read — see coverage on query cost.
I'm hitting 429 constantly
Pace the client rather than retry-looping. Limits are per account, not per key, so multiple workers share one budget and have to divide it. Rate limits has a token-bucket example.
Also check you're using limit=200: fifty pages of 20 costs ten times what
five pages of 200 costs, for identical data.
Can I get the whole dataset as a file?
Not through the API — there's no bulk jobs export. For flat-file delivery, talk to us. For keeping a live mirror, sync the feed.
Do you have webhooks?
No. Sync is pull-based via /v1/jobs/feed —
one request returns everything since your cutoff. See
syncing the feed.
Is the data accurate?
It's scraped from employers' own ATS boards, so apply_url points at the
real application form and postings track the source board within a few hours.
Enriched fields — skills, seniority, taxonomies, salary — are derived
by classifiers and are not perfect. Coverage varies by field; see
coverage.
If you find data that's wrong, send the job id. That's the most useful bug report we get.
Reporting bad data#
Send the id and what's wrong with it. Enrichment errors — a mis-parsed salary,
a wrong seniority, a missing skill — are fixable, and a concrete example is worth
far more than a general report.
Status#
The dashboard shows your usage and key activity. For API
availability, /v1/health is unauthenticated and
free to poll.