Indeed

Indeed is a job search and advertising platform that enables employers to post jobs and manage sponsored job campaigns.

omniload supports Indeed as a source using the Indeed Ads API.

URI format

The URI format for Indeed is as follows:

indeed://?client_id=<client_id>&client_secret=<client_secret>&employer_id=<employer_id>

URI parameters:

  • client_id (required): OAuth client ID for Indeed API authentication.

  • client_secret (required): OAuth client secret for Indeed API authentication.

  • employer_id (required): The employer ID associated with your Indeed account.

Setting up an Indeed Integration

To set up Indeed integration, you need to:

  1. Create an Indeed Developer account

  2. Create an API application in the Indeed Developer Portal

  3. Obtain OAuth credentials (client_id, client_secret)

  4. Get your employer_id from Indeed

Please follow the Indeed API documentation for detailed setup instructions.

Once you have your credentials, here’s a sample command that will copy data from Indeed into a DuckDB database:

omniload ingest \
  --source-uri 'indeed://?client_id=your_client_id&client_secret=your_secret&employer_id=your_employer_id' \
  --source-table 'campaigns' \
  --dest-uri 'duckdb:///indeed.duckdb' \
  --dest-table 'dest.campaigns'

Tables

Indeed source allows ingesting the following resources into separate tables:

Table

PK

Inc Key

Inc Strategy

Details

campaigns

Id

-

merge

Retrieves all campaigns for the employer

campaign_details

campaignId

-

merge

Retrieves detailed information for each campaign

campaign_budget

campaignId

-

merge

Retrieves budget information for each campaign

campaign_jobs

campaignId, jobKey

-

merge

Retrieves all jobs associated with each campaign

campaign_properties

campaignId

-

merge

Retrieves properties for each campaign

campaign_stats

campaignId, Date

Date

merge

Retrieves daily statistics for each campaign

account

employerId, jobSourceId

-

merge

Retrieves account information including job sources

traffic_stats

-

date

merge

Retrieves daily traffic statistics

Incremental Loading

The campaign_stats and traffic_stats tables support incremental loading using date-based merge strategy. Use --interval-start and --interval-end to specify the date range:

omniload ingest \
  --source-uri 'indeed://?client_id=your_client_id&client_secret=your_secret&employer_id=your_employer_id' \
  --source-table 'campaign_stats' \
  --dest-uri 'duckdb:///indeed.duckdb' \
  --dest-table 'dest.campaign_stats' \
  --interval-start '2024-01-01' \
  --interval-end '2024-01-31'

Examples

Fetch all campaigns

omniload ingest \
  --source-uri 'indeed://?client_id=your_client_id&client_secret=your_secret&employer_id=your_employer_id' \
  --source-table 'campaigns' \
  --dest-uri 'duckdb:///indeed.duckdb' \
  --dest-table 'dest.campaigns'

Fetch campaign statistics for a date range

omniload ingest \
  --source-uri 'indeed://?client_id=your_client_id&client_secret=your_secret&employer_id=your_employer_id' \
  --source-table 'campaign_stats' \
  --dest-uri 'duckdb:///indeed.duckdb' \
  --dest-table 'dest.campaign_stats' \
  --interval-start '2024-12-01' \
  --interval-end '2024-12-31'

Fetch traffic statistics

omniload ingest \
  --source-uri 'indeed://?client_id=your_client_id&client_secret=your_secret&employer_id=your_employer_id' \
  --source-table 'traffic_stats' \
  --dest-uri 'duckdb:///indeed.duckdb' \
  --dest-table 'dest.traffic_stats' \
  --interval-start '2024-12-01' \
  --interval-end '2024-12-31'

Fetch account information

omniload ingest \
  --source-uri 'indeed://?client_id=your_client_id&client_secret=your_secret&employer_id=your_employer_id' \
  --source-table 'account' \
  --dest-uri 'duckdb:///indeed.duckdb' \
  --dest-table 'dest.account'