Resources / Support

Support

How to get help, what to include, and answers to the questions that come up most.

Getting help#

TopicContact
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, the message field 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:

  • skill commas mean AND. skill=python,aws needs 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's machinelearning.
  • 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.

Was this page helpful?