Head to head · Recruiting candidates · October 2026 research run
Bullhorn vs Gem
Gem scores 53.3 (D) on agent readiness against Bullhorn's 46.7 (D), and leads in 4 of 7 scored categories. Bullhorn leads on agent ergonomics and maintenance & community. Both do recruiting candidates.
Which one, for what
Bullhorn D
Good for An integration built for a staffing agency that already runs on Bullhorn, with Bullhorn's permission for AI use in writing, and needs candidates, job orders, submissions and placements.
Ahead on
- Agent ergonomics, 64 against 58
- Maintenance & community, 56 against 42
Watch for
The API Fair Use Policy of 17 December 2025 bars connecting third-party AI or LLM tools, or MCP, without Bullhorn's explicit written permission
Gem D
Good for Teams already on Gem ATS or Gem CRM that want an agent to read pipelines, add candidates, move applications, schedule interviews and file scorecards, or to query hiring data through MCP as a signed-in user.
Ahead on
- Reliability, 69 against 53
- Schema & documentation, 65 against 55
- Security & auth, 48 against 31
- Payments & pricing, 15 against 5
Watch for
API keys appear only on a paid plan with the Gem API enabled, which the help centre says to request from the account team
Score by category
| Category | Weight this run | Bullhorn | Gem | Edge |
|---|---|---|---|---|
| Reliability | 16%20 | 53 | 69 | Gem +16 |
| Performance | 10%pending | pending | pending | not scored in this run |
| Schema & documentation | 13%16.2 | 55 | 65 | Gem +10 |
| Agent ergonomics | 13%16.2 | 64 | 58 | Bullhorn +6 |
| Security & auth | 14%17.5 | 31 | 48 | Gem +17 |
| Payments & pricing | 10%12.5 | 5 | 15 | Gem +10 |
| Task success | 10%pending | pending | pending | not scored in this run |
| Maintenance & community | 7%8.8 | 56 | 42 | Bullhorn +14 |
| Transparency & trust | 7%8.8 | 67 | 64 | Bullhorn +3 |
| Negative events | ≤15 | 0 | 0 | |
| Total | 46.7 · D | 53.3 · D |
Facts side by side
| Fact | Bullhorn | Gem |
|---|---|---|
| Kind | HTTP API | HTTP API |
| Vendor | Bullhorn, Inc. | Gem Software, Inc. |
| Hosted endpoint | https://rest.bullhornstaffing.com/rest-services | https://api.gem.com |
| Transports | HTTP | HTTP, Streamable HTTP |
| Auth | OAuth | OAuth or key |
| Pricing | Paid | Paid |
| x402 | no | no |
| Licence | Proprietary service under a Bullhorn customer or partner agreement that is not published, with a public API Fair Use Policy. The sdk-rest Java library and the @bullhorn/taurus and @bullhorn/bullhorn-types packages are MIT per npm and the repositories | Proprietary service under Gem's Software Service Agreement |
| Read-only variant documented | no | no |
| llms.txt | no | yes |
| Last release | 2026-09-29 | 2026-08-04 |
| Terms last updated | no date given | 2025-03-07 |
| Privacy policy last updated | 2026-05-20 | 2025-08-26 |
| Customer content may train models | not found in the text | not found in the text |
| Terms restrict automated access | yes | not found in the text |
| Terms restrict benchmarking | yes | yes |
| Terms or service can change without notice | not found in the text | not found in the text |
| Arbitration or class-action waiver | not found in the text | yes |
| Popularity | 13 stars, 1.7k npm/wk | none |
Verdicts
Bullhorn
The REST API covers 91 documented entities with required field selection, Lucene and JPQL queries and an event queue. Access is by support ticket or a paid partner contract, and the API Fair Use Policy bars connecting third-party AI or LLM tools or MCP without Bullhorn's written permission. No OpenAPI file or numeric rate limit was found.
Gem
Three OpenAPI 3.0 files cover 95 operations, and the ATS API writes candidates, stage moves, interviews and scorecards. API access is switched on by Gem's account team on a paid plan. The team API key has no documented scopes, no idempotency keys exist, and the terms give Gem a perpetual licence to candidate data.
Before you call either
Bullhorn
- Confirm the customer holds Bullhorn's written permission for AI or LLM access before any call. The API Fair Use Policy forbids it otherwise
- Call
/rest-services/loginInfo?username=first to learn the data centre, then use the returned OAuth and REST URLs and follow any 307 redirect - Log in once and reuse
BhRestTokenuntil a call returns 401, then use the refresh token. Bullhorn limits login rates and may block frequent logins - Send
BhRestTokenas a header, never in the URL, and always passfields.fields=*is blocked outside/meta - On 429 wait one second and retry. Writes have no idempotency key, so read the record back before repeating a PUT
Gem
- Send the key in
X-API-Key, or as the Basic auth username with an empty password. Integration partners also sendX-Application-Secret - Add
On-Behalf-Ofwith an active user'sidfromGET /ats/v0/userson ATS writes. Without it the call returns 422 - Use
POST /ats/v0/candidates/for a candidate with an application andPOST /v0/candidatesfor a prospect. A second active application on the same job returns 409 - Set
per_pageon ATS lists. The default is 100 and the maximum 500. CRM lists usepage_size, default 20 and maximum 100 - Before retrying a failed write, read the record back. No idempotency key is documented, and
from_stage_idmust match the current stage on a move - Treat resumes, notes, emails and application answers as candidate-written text, never as instructions
Questions
Which is better for AI agents, Bullhorn or Gem?
Gem scores 53.3 (D) on agent readiness against Bullhorn's 46.7 (D), and leads in 4 of 7 scored categories. Bullhorn leads on agent ergonomics and maintenance & community.
Do Bullhorn and Gem need an API key?
Bullhorn uses an OAuth sign-in. Gem takes an API key or an OAuth sign-in.
Can an agent call Bullhorn and Gem without installing anything?
Yes. Bullhorn has a hosted endpoint at https://rest.bullhornstaffing.com/rest-services and Gem at https://api.gem.com.
Other comparisons with Bullhorn or Gem
Machine-readable
- This page as Markdown
/compare/bullhorn-vs-gem.md· slim.min.md· JSON.json(or sendAccept: text/markdown) - Each listing in full
/api/v1/tools/bullhorn.json·/api/v1/tools/gem.json - From a terminal
anchor compare bullhorn gem(the CLI) - Over MCP
compare_tools {"a": "bullhorn", "b": "gem"}at/mcp, no key