Hirebase exposes several endpoints that overlap in what they return — jobs, companies, search results — but they’re tuned for very different use cases. This guide walks through the most common things people build on top of Hirebase and which API to reach for.Documentation Index
Fetch the complete documentation index at: https://www.hirebase.org/docs/llms.txt
Use this file to discover all available pages before exploring further.
Quick Decision Guide
Add job search to your app
Build your own product on Hirebase data
Use
POST /v2/jobs/export — sync to your own databaseShow 'similar jobs' under a listing
Use
POST /v2/jobs/vsearch with search_type: "job"Match jobs to a candidate's resume
Use
POST /v2/resumes/embed → vsearch with search_type: "resume"Build company profile pages
Keep your local data fresh
Use
GET /v2/jobs/expired-jobs on a schedule1. Adding Job Search to an Existing App
Use:POST /v2/jobs/search
This is the right starting point for most integrations: a job board, a careers page, a search bar in a community app, an internal tool — anywhere you want users to type a query and see a paginated list of matching jobs back.
It’s the simplest endpoint to integrate, the response shape is predictable, and every job comes back with a unique job_slug and company_slug you can use to build clean URLs in your own app:
GET /v2/jobs/{job_id} for the full record.
When this stops being the right choice
The/jobs/search endpoint is paginated. As long as your users are searching — narrowing a filter, looking at the first few pages of relevant jobs — pagination is fine and you’ll never feel a slowdown.
Where it breaks down is when you try to use the search endpoint to iterate over the entire dataset. Past roughly 200,000 results, deep pagination gets noticeably slow. If you find yourself writing a loop that keeps incrementing page to walk every job in the database, you’ve outgrown this endpoint — see the next section.
2. Building Your Own Product on Hirebase Data
Use:POST /v2/jobs/export
If you’re building a real product on top of Hirebase data — your own search engine, an analytics dashboard, an ATS feature, an LLM agent that needs offline access to job listings — don’t paginate the search endpoint. Use the export API instead.
POST /v2/jobs/export takes the same filter shape as /jobs/search but kicks off an async task that produces a single CSV or JSON file containing every matching job. You then poll GET /v2/tasks/{task_id} until state is "completed", download the file from result.download_url, and load it into your own database (Postgres, ElasticSearch, MongoDB — whatever fits your stack).
days_ago: 1) to pick up new listings, and use Expired Jobs to remove stale ones (see section 6).
Pagination fields (
page, limit) are accepted in the search block but ignored — the export processes the entire matching result set. If you want a smaller export, narrow the filters instead.3. Similar Jobs / Recommendations
Use:POST /v2/jobs/vsearch with search_type: "job"
If you have a job detail page and want a “Similar jobs” rail at the bottom, vector search is built for this. Pass the _id of the job the user is looking at, and Hirebase returns the most semantically similar listings:
score between 0 and 1 — use it to sort or to threshold low-quality matches. This works much better than re-running a keyword search with the original job’s title, because vector similarity captures things like “ML engineer” being close to “AI engineer” without the strings matching.
The same endpoint with search_type: "summary" powers a natural-language search bar — useful if you want users to type “remote backend role at a Series B fintech with equity” instead of clicking filters.
4. Resume-to-Jobs Matching
Use:POST /v2/resumes/embed → POST /v2/jobs/vsearch with search_type: "resume"
If your product takes a candidate’s resume (PDF, DOCX, etc.) and recommends jobs, do it in two steps:
- Upload the resume to
/v2/resumes/embed. You get back parsed structured data plus anartifact_id. - Pass the
artifact_idinto/v2/jobs/vsearchwithsearch_type: "resume"to get a ranked list of matching jobs.
artifact_id and re-query against it whenever new jobs come in — no need to re-upload the resume each time.
5. Company Profiles and Sales Prospecting
Use:POST /v2/hirebase/companies/search + GET /v2/hirebase/companies/{company_slug}
If you’re building company profile pages, a “companies hiring now” directory, or a sales prospecting tool that targets companies with active job openings, the company endpoints are the right place to start.
POST /v2/hirebase/companies/search— find companies by industry, keyword, size, job board, etc.GET /v2/hirebase/companies/{slug}— full profile for a single company.GET /v2/hirebase/companies/{slug}/jobs— paginated jobs for that company.
6. Keeping a Synced Database Fresh
Use:GET /v2/jobs/expired-jobs on a schedule
If you’ve taken the export route and have a local copy of Hirebase data, you need two things to keep it fresh:
- New jobs — run a small daily export with
days_ago: 1(orsince_date) and upsert into your DB. - Removed jobs — call
/v2/jobs/expired-jobs?since=YYYY-MM-DDdaily, and mark the returned(company_slug, job_slug)pairs as expired in your DB.
Combining Endpoints
Most real products use more than one endpoint. A typical job-board build looks like:- Search —
POST /v2/jobs/searchpowers the search bar. - Detail —
GET /v2/jobs/{job_id}powers the job detail page. - Similar —
POST /v2/jobs/vsearch(withsearch_type: "job") powers the “Similar jobs” rail at the bottom. - Company —
GET /v2/hirebase/companies/{slug}powers the company sidebar.
- Embed —
POST /v2/resumes/embedonce per user when they sign up. - Match —
POST /v2/jobs/vsearch(withsearch_type: "resume") on a schedule to surface new matches.
- Backfill — one big
POST /v2/jobs/exportto seed your DB. - Daily delta — small
export+expired-jobscalls on a cron. - Query locally — once the data is yours, you can index, embed, and serve it however you want.
Still not sure?
Pick/v2/jobs/search and start prototyping. If you find yourself paginating past page ~2,000, switch to /v2/jobs/export. If you find yourself running the same query repeatedly to refresh data, switch to /v2/jobs/export + /v2/jobs/expired-jobs on a schedule. If users are typing natural-language queries instead of clicking filters, add /v2/jobs/vsearch.
Email spencer@hirebase.org if you want a sanity check on which endpoint fits — happy to talk through a specific use case.