Skip to main content
Every job from search or the feed embeds a company summary: id, name, website and a few other fields. The companies endpoints turn that id, or a website domain, into a full profile. Prices and plans are on Billing, limits per group on Rate limits, and error envelopes on Errors.

Find a company ID

Company IDs come from jobs, not from a lookup:
  • company.id on every job object.
  • company.details_url on the same summary is the profile endpoint’s URL, ready to link to without building it yourself.
Have only a website? Enrich the company from its domain instead.

Get a company profile

GET /api/companies/{id} returns the fully enriched CompanyDto, or 404 for an unknown, disabled or incomplete company.
The profile needs no API key, so company.details_url is safe to put in front of end users. It resolves from a browser with no authentication on your side.

What enrichment covers

The Company object reference lists every field. Unknown data comes back as [] or null, so an empty list means “unknown,” not “none.”

List open jobs

GET /api/companies/{id}/jobs returns the jobs a company currently has posted, one page at a time. page_size defaults to 25 and maxes out at 100; see Pagination.
It’s billed like search: per delivered job, from your included jobs first. The Unlimited plan doesn’t cover it, and an empty page costs nothing. An unknown company ID returns 200 with an empty jobs array, not 404. Check the array length, not the status code.

Enrich a company from its domain (beta)

Beta, available on activation. Email support@jobo.world to switch it on for your account. Until then, calls return 403 with code: company_enrichment_not_enabled and cost nothing.
Company Enrichment, GET /api/companies/by-domain, turns a website domain into a profile in the same CompanyDto shape.
The returned id identifies the domain’s profile, not a Jobo company, so it doesn’t resolve at GET /api/companies/{id}.

Poll a pending profile

A 202 carries a status_url, also sent as the Location header along with Retry-After. Cold runs usually take one to five minutes.
Poll status_url rather than calling by-domain again. Repeat calls count against the DataSets rate limit; the poll counts toward Default. The poll returns 202 while the run goes through queued, resolving, acquiring and extracting, then 200 with the profile. It returns 404 when the domain yielded no profile or no run is in progress. Profiles are cached for 180 days and refreshed in the background as they age. refresh=true forces a fresh run; fresh runs are limited per domain per day, and past the limit the request returns 503 with Retry-After.

What a profile costs

A delivered profile costs $0.003 (3 credits), cached ones included. Included jobs don’t apply, and the Unlimited plan doesn’t cover it. The charge is taken up front and refunded automatically on any error.