Bullhorn
Recruiting ATS/CRM — search/query entities and create/update records. 3-leg OAuth; production writes, so pilot one record first.
Use Bullhorn to read jobs, contacts and companies from the ATS, and to push enriched candidates back in.
Free on Hyreflow (0 credits) — runs on your own Bullhorn credentials. Auth is a 3-leg OAuth flow using BULLHORN_CLIENT_ID/SECRET/USERNAME/PASSWORD/REDIRECT_URI — not self-serve yet, contact Hyreflow to get it enabled.
Capabilities
| Tool | Does | Cost |
|---|---|---|
search | Lucene search over indexed entities (Candidate, JobOrder, ClientContact, ClientCorporation…) | Free |
query | SQL-style where query over non-indexed entities | Free |
get_entity | Fetch a single record by entity + id | Free |
create_entity | Create a record (e.g. a Candidate) | Free |
update_entity | Update a record by id | Free |
ping | Verify the session (safe read-only pilot) | Free |
Guidance
searchvsquery:searchis Lucene over indexed entities;queryis SQL-stylewherefor non-indexed entities. Pick by entity type.- Datacenter caveat: auth/rest hosts can be cluster-specific — verify the OAuth app and
redirect_uribefore the first run; the client re-logs in once on a 401. - Production ATS writes —
create_entity/update_entityhit live data; pilot one record, confirm, then bulk. - Handoff: enriched candidates →
create_entity("Candidate", …).
hyreflow tools execute bullhorn search \
--payload '{"entity":"JobOrder","query":"isOpen:true","fields":"id,title,clientCorporation"}'Run ping as a zero-cost pilot to confirm the OAuth session resolves before issuing any reads or writes.
Rate limits & bulk writes
Bullhorn is limited to 1,500 requests / minute per OAuth Client ID. Use create_candidates_batch,
create_client_contacts_batch, create_client_corporations_batch and create_job_orders_batch for large
pushes — they pace calls automatically and collect per-row failures. See Bulk pushes to ATS / recruiting
CRM for limits across all CRMs.