Loxo
Recruiting ATS/CRM: read jobs, people & companies, create candidates, attach them to jobs. Agency-scoped, production writes.
Use Loxo as an ATS write target: read jobs, people and companies, create candidates, and link candidates to jobs. It is the destination for sourced + enriched candidates, and the source of your target-account list for company-first BD.
Free (BYOK). ATS/CRM operations cost no credits. Loxo is agency-scoped, connect it from the dashboard Integrations page with your API key and agency slug (e.g. acme). Pasting your full Loxo URL (acme.loxo.co) works too, the slug is its first label.
Capabilities
| Tool | Does | Cost |
|---|---|---|
list_jobs | Paginated jobs (page, per_page) | Free |
get_job | Single job by id | Free |
list_people | Paginated people / candidates | Free |
list_companies | Companies / accounts by cursor, with a Lucene query | Free |
iter_companies | Walk the whole account list, following the cursor | Free |
get_company | Single company by id: website (url), custom fields | Free |
update_company | Edit a company (create_company to add one) | Free |
list_dynamic_fields | The agency's custom-field definitions | Free |
create_person | Create a person record | Free |
apply_to_job | Add a candidate to a job (multipart) | Free |
list_job_candidates | Candidates on a job, with pipeline stage | Free |
Guidance
- Adding a candidate to a job is
apply_to_job(POST /jobs/{id}/apply), notcreate_job_candidate(deprecated alias), it ismultipart/form-datawith requiredemail+name+phone(optionalresumefile). - These are production ATS writes: pilot one record, confirm the result, then bulk.
- Handoff: enriched candidates →
create_person/apply_to_jobto assign them to a job. - Jobs paginate with
page/per_page. People and companies paginate by cursor: pass thescroll_ideach response returns, with aper_pageup to 100, and a Lucenequeryto filter (name:acme AND city:denver).iter_companiesfollows the cursor for you. - A company's agency custom fields arrive as
custom_hierarchy_1..6{id, value}pairs, and each slot means something different per agency. Read the definitions withlist_dynamic_fields, then map the slots to their names withcompany_custom_fields(company, labels). - Company-first BD:
iter_companies→ each account'surl→ career-page scraping for their live roles → contacts through the sourcing waterfall.
hyreflow tools execute loxo apply_to_job \
--payload '{"job_id":"1234","email":"[email protected]","name":"Ada Lovelace","phone":"+15555550123"}'Loxo is an ATS sink, not a waterfall member: wire it as the final push step after source → enrich → verify.
Rate limits & bulk writes
Loxo does not publish a fixed RPM, so the adapter defaults to a conservative 60 requests / minute.
Use create_people_batch, create_jobs_batch and create_companies_batch for large pushes.
See Bulk pushes to ATS / recruiting CRM.
Lever
Post a job to Lever: title, team/department/location categories, description, requirement lists, workplace type, salary range, tags and requisition codes. BYOK-only, production writes.
Lusha
B2B email + direct-dial enrichment with strong NA/EU coverage. LinkedIn /in/ URLs only, no Sales Navigator.