Employers whose live roles this API returns.
Every company here has at least one live listing you can fetch, so open_roles and GET /v1/jobs?company=<slug> reconcile. That is the point of the endpoint: a directory entry advertising roles the API will not serve is a broken promise.
Further companies (22,138 when measured on 8 Aug 2026) were seen hiring on their own careers page, under a source we do not redistribute. They carry own_site_roles and open_roles: 0, their individual pages resolve normally, and they are included only with include_discovered=true — they are evidence a company is hiring, not inventory you can buy.
Ordered by GREATEST(open_roles, own_site_roles) DESC, name, slug. The slug makes the ordering total: without it ties could be reordered between two requests (measured 3 Aug 2026: 18,213 tie groups covering 36,464 of 186,558 companies, 19.5%), so offset paging silently repeated and skipped rows.
offset is capped at 100,000 and an offset beyond that is a 422, not a silently clamped 200. Use cursor for deep paging — it is lossless and has no limit.
Request
- Base URL: https://api.jobopportunitiesapi.org
- URL: https://api.jobopportunitiesapi.org/v1/companies
- Auth: HTTP bearer
Query parameters
The next_cursor from the previous page. Overrides offset.
Only companies whose domain we fetched and found their own name on. An absent website means we could not prove one, not that they have none.
Also return the companies we watched hiring on their own careers page under a source we do not redistribute. They arrive with open_roles: 0 and a non-zero own_site_roles, and careers_url points at the page we saw them on. Useful for enrichment; not inventory.
Response
A page of companies.
Changes
No recorded changes to this operation across all 1 revision of this API.