Job Opportunities API

Check the data. Then trust it.

Job Opportunities API for Activepieces

Pull new jobs into an Activepieces flow with the built-in HTTP piece.

  • Official
  • Open source
  • No code

Activepieces Cloud or self-hosted · HTTP and Schedule are built-in pieces

Set it up in 4 steps

You need a free API key (no card) — get one here.

  1. Trigger: Schedule → Every Day

    Create a flow and choose the Schedule piece with the Every Day trigger.

  2. Action: HTTP → Send HTTP request

    Add the HTTP piece's Send HTTP request action with these values:

    HTTP → Send HTTP request
    Method:       GET
    URL:          https://api.jobopportunitiesapi.org/v1/jobs
    Headers:      Authorization = Bearer YOUR_API_KEY
    Query params: country = DE, q = engineer, remote = remote,hybrid, limit = 20
  3. Loop over the jobs

    Add a Loop step and set its items to the HTTP step's body → data. Inside the loop, each item is one job; map title, company, location and apply_url into Google Sheets, Slack, Airtable or your database.

  4. Optional: the dedicated piece (self-hosted)

    On a self-hosted instance, a platform admin can install the packed piece (.tgz above) as a custom piece; it adds New Job, Job Closed and Job Changed triggers and Search Jobs, Get Job and Find Company actions.

STEP 1ScheduleEvery DaySTEP 2HTTPSend HTTP request: GET/v1/jobsSTEP 3LoopOne run per job in body.dataSTEP 1ScheduleEvery DaySTEP 2HTTPSend HTTP request: GET /v1/jobsSTEP 3LoopOne run per job in body.data
Diagram (not a screenshot): the three steps of the flow.

Example: for job boards

A team running Activepieces next to its own job board database loops over each morning's results and upserts rows keyed on the job id, keeping apply_url as the apply link.

Example: for AI agents

Feed the looped jobs into an AI piece that tags each role with skills or seniority before storing it, so an internal assistant can answer "which new roles need Rust?" from your own table.

Questions

Straight answers about plans, metering and what to show.

How is usage counted?

Every job row the API returns counts against your plan's monthly record allowance, exactly as a direct API call would. The free key has a small monthly allowance and needs no card, so start with small page sizes and a daily schedule rather than polling every few minutes. Your key's largest page size is in GET /v1/me (limits.max_page_size).

Can it remove jobs that have closed?

Yes, two ways. The change feed (/v1/changes) and the closure feed (/v1/jobs/expired) are on the Growth plan and above and are the cheapest way to keep a copy in sync. On every plan you can re-check a single job with GET /v1/jobs/{id}?include_closed=true, which returns it with status "closed" once the employer has taken it down.

Where do applicants apply?

On the employer's own site. Every job carries apply_url, the employer's application page or applicant-tracking-system link. Job Opportunities API never sits between the candidate and the employer, so always use apply_url as the apply button.

Do I need to show any attribution?

Yes, one line where listings are shown publicly: a visible credit "Data: Job Opportunities API" linking to https://jobopportunitiesapi.org (see /terms — storing, displaying, reselling and redistributing within your key's plan limits are all allowed). In addition, jobs listed through Erioun for Teams carry an attribution field (for example "via Erioun for Teams") and a canonical_url: when attribution is present, show it with the listing and link to canonical_url.

See all integrations

Get a free API key

No card. The same key works for every integration on this site.

Get a free key →