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.