details_url to fetch the fully enriched company profile on demand.
- Stream career sites —
POST /api/career-sites/feed. Cursor-paginated stream of slim career-site rows.
updated_after to pick up changes on subsequent runs. When you need the rich company data (funding, leadership, ratings, etc.), follow details_url (or call GET /api/companies/{id}) for the rows you care about.
The Career Sites Feed is metered and page-capped because each row carries
enriched company data. See Billing & Credits for wallet behavior
and current pricing links.
Keeping your directory in sync
A typical integration runs an initial backfill, then an incremental sync on a schedule. Use the companyid as your primary key — it’s stable across updates, so syncs are simple upserts.
1. Initial backfill
Page through the entire feed once with cursor pagination. Persistnext_cursor after every successful batch so a crash resumes mid-stream rather than restarting from page 1. Stop when has_more is false.
2. Incremental sync
Run on a schedule (a few times per day is plenty — new career sites are discovered in modest volumes). Each run:- Read your stored
last_run_started_at. Recordnowasthis_run_started_atbefore the first request. - Call
/feedwithupdated_after = last_run_started_at - 15m(a small overlap protects against clock skew). - Page through with
cursoruntilhas_moreisfalse. Upsert each row byid. - After the loop succeeds, persist
this_run_started_atas the newlast_run_started_at.
3. Backoff & rate limits
- On
400 Invalid cursor, drop the cursor and restart pagination — don’t loop on the same value. - Watch
X-Credits-Balanceto alert before you run dry.
End-to-end example
This sample implements the full workflow against a small key-valuestore. Replace store with your real database (Postgres upsert, etc.).
Filters
All filter fields on the request body are optional. Lists are OR-matched internally; multiple filters AND together.| Field | Type | Description |
|---|---|---|
industries | string[] | Industry tags (“fintech”, “biotech”, …). |
company_sizes | string[] | Size bands (“1-10”, “11-50”, “51-200”, …). |
country_codes | string[] | ISO 3166-1 alpha-2 country codes. |
funding_stages | string[] | Funding stage tags (“seed”, “series_a”, …). |
company_types | string[] | One of "for_profit", "non_profit". |
founded_after | integer | Only career sites whose company was founded in or after this calendar year. |
is_agency | boolean | Restrict to agency (true) or non-agency (false) companies. |
updated_after | date-time | Only career sites whose updated_at is strictly greater than this UTC timestamp. Use this for incremental sync. |
discovered_after | date-time | Only companies first discovered on or after this UTC timestamp. Stable across re-enrichment — use for backfill windows. |
discovered_before | date-time | Only companies first discovered strictly before this UTC timestamp. Pair with discovered_after for bounded backfills. |
cursor | string | Opaque pagination cursor from the previous response’s next_cursor. |
batch_size | integer | Rows per batch. Default 50, max 50. |
CareerSiteDto schema
Each row incareer_sites[] has this shape:
| Field | Type | Description |
|---|---|---|
id | string (uuid) | Stable Jobo company identifier — use as the primary key when upserting. |
name | string | Company display name. |
website | string|null | Company marketing website, when known. |
logo_url | string|null | Hosted logo URL. |
summary | string|null | Short (one-paragraph) company summary. |
industries | string[] | 1–3 industry tags describing what the company does. |
categories | string[] | Business-model bucket tags (b2b, b2c, saas, service-provider). |
linkedin_url | string|null | Company LinkedIn profile URL. |
crunchbase_url | string|null | Company Crunchbase profile URL. |
ats | string | ATS / job-board provider the career site runs on (e.g. "greenhouse", "lever", "workday"). |
listing_url | string | Career-site URL where the company’s jobs are listed. |
discovered_at | string|null | UTC timestamp the career site was first discovered. Stable across re-enrichment runs. |
updated_at | string | UTC timestamp the company profile was last updated. |
details_url | string|null | URL to the public, fully enriched company profile (GET /api/companies/{id}). Returns funding, leadership, ratings, press, etc. |
Endpoint
Stream career sites
POST /api/career-sites/feed — cursor-paginated stream of enriched company profiles for newly discovered career sites.
