Search Engine

Algolia job data feed

Instant, typo-tolerant job search in a few keystrokes.

Algolia is the shortest path from a job feed to a search box that feels instant — typo tolerance, faceting, and geo-search come with the index rather than having to be built. Jobo creates the index on the first push and uses the Jobo job ID as the Algolia objectID, so the 15-minute incremental sync replaces records in place instead of piling up duplicates. It is a document destination, so a pipeline can reshape or trim each record before it is sent, which matters more here than elsewhere because Algolia enforces a per-record size limit.

Sync
Incremental, every 15 min
Deduplication
Upsert on job ID
Pipelines
Supported
Credentials
AES-256 at rest

Connection configuration

The fields Jobo collects to reach your Algolia instance.

application_idstringrequired

Found in your Algolia dashboard under API Keys.

api_keystringrequired

Admin API Key with write access. Encrypted at rest.

index_namestring

Target index name. Defaults to "jobs". Auto-created.

Algolia config
{
  "application_id": "YourApplicationID",
  "api_key": "••••••••",
  "index_name": "jobs"
}

How to sync jobs to Algolia

One-time setup. After this, the feed maintains itself.

  1. 1

    Copy your Application ID and an Admin API Key

    Both live in the Algolia dashboard under Settings → API Keys. The Application ID is the short alphanumeric string at the top. For api_key take the Admin API Key, or a custom key carrying addObject, deleteObject, settings, and listIndexes on the target index. The Search-Only key cannot write and is by far the most common setup mistake. Whichever you use, it is encrypted at rest with AES-256.

  2. 2

    Point the feed at a dedicated index

    index_name defaults to jobs and the index is created on the first push. Force resync deletes and recreates it, so give the feed an index of its own rather than one your application also writes into.

  3. 3

    Tune searchable attributes and facets

    Jobo pushes the records; Algolia decides how they are searched. Once the first sync lands, set searchable attributes, faceting, and custom ranking on the index. Keep _jobo_synced_at filterable — the feed uses that stamp to find and delete listings that have gone stale.

    javascript
    index.setSettings({
      searchableAttributes: ["title", "company", "description"],
      attributesForFaceting: ["searchable(company)", "filterOnly(_jobo_synced_at)"],
      customRanking: ["desc(date_posted)"],
    })
  4. 4

    Query it from your app

    Records are ordinary Algolia objects keyed on objectID, so any Algolia client or InstantSearch widget works against them unchanged — including aroundLatLng geo-search, provided you pushed coordinates.

    javascript
    const { hits } = await index.search('backend engineer', {
      filters: 'employment_type:full_time',
      aroundLatLng: '52.37,4.89',
      aroundRadius: 25000,
    })

Common issues

What actually goes wrong when connecting Algolia, and the fix.

high

Every push fails with a 'method not allowed with this API key' error.

You are using the Search-Only API Key. Swap in the Admin API Key, or a custom key with addObject, deleteObject, settings, and listIndexes on the target index. This is the single most common Algolia setup mistake.

high

Some jobs never appear in the index.

Algolia rejects any record over its per-record size limit, and a long job description is almost always the culprit. Attach a pipeline that truncates or drops description so every record stays under the limit for your plan.

medium

The record count keeps climbing past the number of live jobs.

objectID is the Jobo job ID, so pushes are idempotent and cannot duplicate on their own. Extra records mean something else writes into the same index — give the feed its own.

medium

Index settings disappeared after a force resync.

Force resync deletes and recreates the index, which takes searchable attributes, faceting, and custom ranking with it. Keep those settings in a script you can re-run rather than clicking them back in the dashboard.

Best practices

  • Use an Admin API Key — the Search-Only key cannot write and will fail every push.
  • Give the feed a dedicated index; force resync deletes and recreates it.
  • Re-apply index settings after a force resync — they are dropped with the index.
  • Trim long descriptions with a pipeline to stay under Algolia's record size limit.
  • Keep _jobo_synced_at filterable so stale-record cleanup can find what to remove.

Start syncing jobs to Algolia

Connect the destination, pick your filters, and let the feed run.