Skip to main content

1. Get an API key

The Jobs API is distributed through RapidAPI. Subscribe and copy your X-RapidAPI-Key from the dashboard.
The examples use clair-job-search-api.p.rapidapi.com. Use the exact X-RapidAPI-Host shown on the listing.

2. Search the index

This request finds recently published remote data roles in Germany that mention Python or PyTorch:
cURL
Clair answers from its own crawled index. The request does not contact an employer or applicant tracking system.
The sample values are illustrative. Fields remain present with null when the publisher did not state a value or Clair could not derive one safely.

3. Search internships

Jobs and internships use the same endpoint and schema:
cURL
seniority=intern includes titles recognized as internships, co-ops, apprenticeships, working-student roles, and placements. Use first_seen_after with sort=first_seen_at for a polling or alerting loop. Use posted_after when the publisher’s own publication time is what matters.

4. Page with the cursor

When meta.has_more is true, repeat the same search and pass meta.next_cursor unchanged:
cURL
The cursor is bound to the original filters and sort. Changing them while reusing the cursor returns bad_cursor. Stop when:
limit defaults to 25 and caps at 100.

5. Ask only for payloads you need

An exact total requires an additional distinct-count query and is off by default:
With it, meta.total is an exact count of deduplicated requisitions and meta.total_is_exact is true. Without it, total is null. Descriptions are also opt-in:
This adds a plain-text description_excerpt capped at 2,000 characters. description_available is always present, so a null excerpt is distinguishable from a description that was simply not requested. The excerpt is not a complete or archival description; use posting_url for the publisher’s current copy.

6. Read freshness and provenance

For one result:
  • posted_at and updated_at come from the publisher.
  • first_seen_at is when Clair discovered it.
  • last_verified_at is the latest successful crawl that still contained it.
  • source identifies the ATS provider, board, and source posting ID.
  • compensation.source distinguishes a structured ATS value from a figure extracted from employer-written description text.
For the whole response, inspect meta.index.status, active_boards, and stale_boards. meta.index.as_of is the most recent successful board crawl, not a claim that every source refreshed at that instant.

Full Jobs API reference

Every filter, response field, freshness state, and error code.