Indeed Employers API

Operations for creating and managing employer profiles on Indeed. Employer entities must be created before job postings can be associated with them. Supports global attributes such as employer name and type, as well as country-specific attributes like website URL and phone number.

OpenAPI Specification

indeed-employers-api-openapi.yml Raw ↑
openapi: 3.1.0
info:
  title: Indeed Employer Candidates Employers API
  description: 'The Indeed Employer API provides a RESTful interface for managing employers, candidates, and job postings on the Indeed platform. This API enables ATS partners and hiring platforms to programmatically create and update employer profiles, retrieve and manage candidate applications, and synchronize job postings with Indeed''s employment ecosystem.


    Indeed''s native APIs use GraphQL via the `https://apis.indeed.com/graphql` endpoint. This OpenAPI specification represents a RESTful abstraction of the key employer-facing operations available through Indeed''s partner APIs, covering the Employer Data API, Retrieve Candidates API, and Job Sync API.


    **Authentication**: All API requests require OAuth 2.0 Bearer Token authentication. Partners must register through the Indeed Partner Console to obtain client credentials.


    **Rate Limits**: API calls are subject to rate limiting. Consult the Indeed Partner documentation for current rate limit policies.'
  version: 1.0.0
  contact:
    name: Indeed API Support
    url: https://docs.indeed.com/support/
    email: opensource@indeed.com
  license:
    name: Proprietary
    url: https://docs.indeed.com/legal-terms/developer-agreement
  termsOfService: https://www.indeed.com/legal/api-terms
  x-logo:
    url: https://www.indeed.com/images/indeed-logo.png
servers:
- url: https://apis.indeed.com
  description: Indeed Production API Server
security:
- BearerAuth: []
tags:
- name: Employers
  description: Operations for creating and managing employer profiles on Indeed. Employer entities must be created before job postings can be associated with them. Supports global attributes such as employer name and type, as well as country-specific attributes like website URL and phone number.
paths:
  /v1/employers:
    post:
      operationId: createEmployer
      summary: Indeed Create an Employer
      description: Creates a new employer entity on Indeed. The employer name is required when creating a new employer. An employer must be created before job postings can be associated with it. Uses the patchEmployer mutation internally.
      tags:
      - Employers
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PatchEmployerInput'
            example:
              id: ats-partner_employer-12345
              employerName: Acme Corporation
              employerAttributes:
                employerType: DIRECT_EMPLOYER
                countrySpecificAttributes:
                - country: US
                  websiteUrl: https://www.acmecorp.com
                  phoneNumber: +1-555-123-4567
      responses:
        '201':
          description: Employer created successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PatchEmployerPayload'
        '400':
          description: Invalid input. Check the errors array for details.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PatchEmployerPayload'
        '401':
          description: Authentication credentials are missing or invalid.
        '403':
          description: Insufficient permissions to create employers.
        '409':
          description: An employer with the given ID already exists.
        '429':
          description: Rate limit exceeded. Retry after the specified delay.
      x-microcks-operation:
        delay: 0
        dispatcher: FALLBACK
  /v1/employers/{employerId}:
    get:
      operationId: getEmployer
      summary: Indeed Retrieve an Employer
      description: Retrieves the details of an existing employer by their unique identifier.
      tags:
      - Employers
      parameters:
      - name: employerId
        in: path
        required: true
        description: The unique identifier of the employer.
        schema:
          type: string
        example: ats-partner_employer-12345
      responses:
        '200':
          description: Employer retrieved successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Employer'
        '401':
          description: Authentication credentials are missing or invalid.
        '403':
          description: Insufficient permissions to access this employer.
        '404':
          description: Employer not found.
      x-microcks-operation:
        delay: 0
        dispatcher: FALLBACK
    patch:
      operationId: updateEmployer
      summary: Indeed Update an Employer
      description: Updates an existing employer entity on Indeed. Only the fields included in the request body are modified. The employer name is optional when updating.
      tags:
      - Employers
      parameters:
      - name: employerId
        in: path
        required: true
        description: The unique identifier of the employer to update.
        schema:
          type: string
        example: ats-partner_employer-12345
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PatchEmployerInput'
      responses:
        '200':
          description: Employer updated successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PatchEmployerPayload'
        '400':
          description: Invalid input.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PatchEmployerPayload'
        '401':
          description: Authentication credentials are missing or invalid.
        '403':
          description: Insufficient permissions to update this employer.
        '404':
          description: Employer not found.
        '429':
          description: Rate limit exceeded.
      x-microcks-operation:
        delay: 0
        dispatcher: FALLBACK
  /v1/employers/{employerId}/registration:
    put:
      operationId: registerEmployerForCandidateSync
      summary: Indeed Register Employer for Candidate Sync
      description: Registers an employer for Candidate Sync integration, enabling the retrieval of candidate data and disposition synchronization between the ATS and Indeed.
      tags:
      - Employers
      parameters:
      - name: employerId
        in: path
        required: true
        description: The unique identifier of the employer to register.
        schema:
          type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                features:
                  type: array
                  items:
                    type: string
                    enum:
                    - RETRIEVE_CANDIDATES
                    - DISPOSITION_SYNC
                    - INDEED_APPLY
      responses:
        '200':
          description: Employer registration updated successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EmployerRegistration'
        '401':
          description: Authentication credentials are missing or invalid.
        '404':
          description: Employer not found.
      x-microcks-operation:
        delay: 0
        dispatcher: FALLBACK
components:
  schemas:
    LocaleSpecificAttributes:
      type: object
      description: Locale-specific employer attributes for multilingual support.
      properties:
        locale:
          type: string
          description: IETF BCP 47 language tag.
          example: en-US
        employerName:
          type: string
          description: Localized employer name.
          example: example_value
        employerDescription:
          type: string
          description: Localized employer description.
          example: example_value
    Address:
      type: object
      description: A physical address.
      properties:
        streetAddress:
          type: string
          description: Street address line.
          example: 123 Main Street
        streetAddress2:
          type: string
          description: Additional street address information.
          example: Suite 400
        city:
          type: string
          description: City name.
          example: Austin
        state:
          type: string
          description: State, province, or region.
          example: TX
        postalCode:
          type: string
          description: Postal or ZIP code.
          example: '78701'
        country:
          type: string
          description: ISO 3166-1 alpha-2 country code.
          example: US
    PatchEmployerInput:
      type: object
      description: Input for creating or updating an employer on Indeed.
      required:
      - id
      properties:
        id:
          type: string
          description: A globally unique employer identifier composed of the ATS identifier and the employer's ID within that system.
          example: ats-partner_employer-12345
        employerName:
          type: string
          description: The employer's display name. Required when creating a new employer, optional when updating an existing one.
          example: Acme Corporation
        employerAttributes:
          $ref: '#/components/schemas/EmployerAttributes'
    Employer:
      type: object
      description: An employer entity on Indeed representing a company or organization that posts jobs and manages candidates.
      required:
      - id
      - employerName
      properties:
        id:
          type: string
          description: A globally unique employer identifier. For ATS partners, this typically combines the ATS system identifier with the employer's internal ID.
          example: ats-partner_employer-12345
        employerName:
          type: string
          description: The display name of the employer as it appears on Indeed job listings and company pages.
          example: Acme Corporation
        employerType:
          type: string
          description: The type of employer entity.
          enum:
          - DIRECT_EMPLOYER
          - STAFFING_AGENCY
          - RECRUITING_FIRM
          example: DIRECT_EMPLOYER
        employerAttributes:
          $ref: '#/components/schemas/EmployerAttributes'
        createdAt:
          type: string
          format: date-time
          description: The timestamp when the employer was created on Indeed.
          example: '2026-01-15T10:30:00Z'
        updatedAt:
          type: string
          format: date-time
          description: The timestamp when the employer was last updated.
          example: '2026-01-15T10:30:00Z'
    EmployerRegistration:
      type: object
      description: Registration of an employer for Candidate Sync integration, enabling candidate data synchronization between the ATS and Indeed.
      properties:
        employerId:
          type: string
          description: The employer's unique identifier.
          example: '500123'
        registrationStatus:
          type: string
          description: The current registration status.
          enum:
          - ACTIVE
          - PENDING
          - INACTIVE
          example: ACTIVE
        features:
          type: array
          description: Enabled Candidate Sync features for this employer.
          items:
            type: string
            enum:
            - RETRIEVE_CANDIDATES
            - DISPOSITION_SYNC
            - INDEED_APPLY
          example: []
        registeredAt:
          type: string
          format: date-time
          description: When the employer was registered for Candidate Sync.
          example: '2026-01-15T10:30:00Z'
    EmployerAttributes:
      type: object
      description: Additional attributes for an employer, including both global and country-specific settings.
      properties:
        employerType:
          type: string
          description: The type classification of the employer.
          enum:
          - DIRECT_EMPLOYER
          - STAFFING_AGENCY
          - RECRUITING_FIRM
          example: DIRECT_EMPLOYER
        countrySpecificAttributes:
          type: array
          description: Attributes that vary by country, such as website URLs, phone numbers, and locale-specific information.
          items:
            $ref: '#/components/schemas/CountrySpecificAttributes'
          example: []
        localeSpecificAttributes:
          type: array
          description: Locale-specific employer attributes.
          items:
            $ref: '#/components/schemas/LocaleSpecificAttributes'
          example: []
    PatchEmployerPayload:
      type: object
      description: Response payload from a successful employer create or update operation.
      properties:
        employer:
          $ref: '#/components/schemas/Employer'
        success:
          type: boolean
          description: Whether the operation succeeded.
          example: true
        errors:
          type: array
          description: Any errors encountered during the operation.
          items:
            $ref: '#/components/schemas/ApiError'
          example: []
    ApiError:
      type: object
      description: An error returned by the Indeed API.
      properties:
        code:
          type: string
          description: A machine-readable error code.
          example: INVALID_INPUT
        message:
          type: string
          description: A human-readable description of the error.
          example: The employer name field is required.
        field:
          type: string
          description: The field that caused the error, if applicable.
          example: employerName
    CountrySpecificAttributes:
      type: object
      description: Country-scoped employer attributes. Provide an ISO 3166-1 two-letter country code to specify the country.
      required:
      - country
      properties:
        country:
          type: string
          description: ISO 3166-1 alpha-2 country code.
          pattern: ^[A-Z]{2}$
          example: US
        websiteUrl:
          type: string
          format: uri
          description: The employer's website URL for this country.
          example: https://www.acmecorp.com
        phoneNumber:
          type: string
          description: The employer's contact phone number for this country.
          example: +1-555-123-4567
        address:
          $ref: '#/components/schemas/Address'
  securitySchemes:
    BearerAuth:
      type: http
      scheme: bearer
      description: OAuth 2.0 Bearer Token authentication. Obtain access tokens through the Indeed OAuth 2.0 authorization flow using your partner client credentials.
    OAuth2:
      type: oauth2
      description: Indeed OAuth 2.0 authentication for partner applications.
      flows:
        clientCredentials:
          tokenUrl: https://apis.indeed.com/oauth/v2/tokens
          scopes:
            employer_access: Access and manage employer data
            candidate_read: Read candidate and application data
            job_posting_write: Create and manage job postings
externalDocs:
  description: Indeed Partner Documentation
  url: https://docs.indeed.com/