Unified.to
All articles

How to Build Candidate Sourcing Across Greenhouse, Lever, Workday, and 60+ ATS Platforms with a Unified API


September 28, 2025

Updated June 2026

Job boards, marketplaces, and recruiting platforms all need to connect with applicant tracking systems (ATS) to source, match, and submit candidates. The problem: every ATS has different schemas, authentication models, and webhook patterns.

A unified API removes that complexity by normalizing candidate, job, and application data across 85 ATS platforms, fetched live from the source. That lets your product import jobs, match candidates, and create applications directly in your customers' ATS — without building a connector per vendor.

When to use candidate sourcing

With a unified API, you can:

  • Build a sourcing platform or job board that connects with any ATS.
  • Import open jobs automatically from a customer's ATS.
  • Submit candidates and create applications directly in the ATS.
  • Track application status and documents (resumes, cover letters) as changes happen.

Normalized ATS objects

Unified.to provides consistent schemas for the core sourcing objects. The actual normalized fields:

  • Job (ats_job) — open requisitions: ats_job_id, ats_job_name, ats_job_description, ats_job_compensation, ats_job_addresses, ats_job_public_job_urls, ats_job_status.
  • Candidate (ats_candidate) — profile and contact data: ats_candidate_id, ats_candidate_name, ats_candidate_emails, ats_candidate_telephones, ats_candidate_skills.
  • Application (ats_application) — submission records linking candidate to job: ats_application_id, ats_application_candidate_id, ats_application_job_id, ats_application_status, ats_application_applied_at.
  • Document (ats_document) — resumes, cover letters, and other files: ats_document_id, ats_document_filename, ats_document_document_url, ats_document_candidate_id.

Custom fields are supported through Unified.to's Metadata API, so you can extend workflows without losing ATS-specific context.

Data flow for candidate sourcing

The flow works the same across every integrated ATS:

  1. Connect to the ATS and import open jobs (ats_job).
  2. Match and submit candidates from your product.
  3. Create applications in the ATS (ats_application), uploading documents (ats_document) where needed.
  4. Track status changes and recruiter feedback through the API or a webhook.

Because Unified.to manages both native and virtual webhooks, you receive updates as changes occur even when the ATS doesn't support webhooks natively.

Learn how to standardize assessments across the same ATS catalog in our guide: How to Build a Candidate Assessment Product with Unified.to.

Supported ATS platforms

Unified.to supports 85 ATS integrations, including:

See the full list of supported ATS integrations.

Why this matters for product teams

For PMs and engineers, the benefits are direct:

  • Speed to market — one build supports 85 ATS platforms.
  • Consistency — jobs, candidates, applications, and documents share one normalized schema.
  • Current data — every read fetches from the source, and webhook-driven updates keep status current without a stored copy to drift.
  • Read and write — read across the catalog and write candidates, applications, and documents; status and stage-transition behavior varies by ATS, so check write support per integration in the capability matrix.

Instead of spending months building and maintaining ATS connectors, your team can focus on the sourcing experience itself.

Launch sourcing workflows across 85 ATS platforms today. Sign up for a free 30-day trial or book a demo to see how Unified.to can accelerate your roadmap.

All articles