Devex Jobs Scraper — No API Key Needed
Pricing
from $6.00 / 1,000 job results
Devex Jobs Scraper — No API Key Needed
Scrape international-development, NGO, humanitarian and UN jobs from Devex.com — zero setup, no API key: AI extraction is built in. Clean records: title, organisation, location, salary, deadline, URL. Delta mode returns only new postings; alive-check re-verifies known URLs.
Devex Jobs Scraper — source facts from inventory
This Actor returns Devex job postings from the shared position inventory in
the flat nomad-agent-job-row-v1 contract.
The private Devex collector retrieves and parses the public source. This Actor
only reads completed inventory records, applies the postedWithin filter, and
maps source facts into the shared row. It does not call a model, translate or
enrich text, search the open web, or fall back to live page parsing.
Input
| Field | Default | Meaning |
|---|---|---|
postedWithin | 7d | Source-date window such as 24h, 7d, 2w, 6m, or any. |
maxItems | 12 | Maximum number of postings, from 1 to 50. |
Output
Every row follows nomad-agent-job-row-v1, the one shape shared by all of
this fleet's job Actors. A row carries every field; null means the
source did not publish that fact, and locations: [] means no
usable location was parsed from the posting. Nothing is guessed.
{"schemaVersion": "nomad-agent-job-row-v1","recordType": "posting","source": "devex","id": "a1b2c3","url": "https://example.com/devex/jobs/a1b2c3","title": "Senior Backend Engineer","company": "Example Company","locations": ["Bilbao","Spain"],"postedAt": "2026-09-02T00:00:00Z","deadline": "2026-10-15","description": null,"descriptionHtml": null,"workType": "remote","custom": {"schemaId": "nomad-agent-job-custom-devex-v1","data": {"externalId": "…","descriptionContractVersion": "…","descriptionSourceUrl": "…"}}}
| Field | Meaning |
|---|---|
schemaVersion | Always "nomad-agent-job-row-v1". |
recordType | "posting" for a job, "diagnostic" for a row reporting something about the run itself. |
source | Which job source the posting came from, from the collector registry's vocabulary — not the Actor name. |
id | Stable identifier for the posting within source. |
url | Canonical public URL of the posting on the source site. |
title | Job title exactly as the source publishes it, untruncated. |
company | Employer name as published. |
locations | Places the role is based, most specific first — e.g. ["Bilbao", "Spain"]. |
postedAt | When the source published the posting, ISO-8601 UTC (YYYY-MM-DDTHH:MM:SSZ). |
deadline | Closing date for applications as an ISO-8601 calendar date (YYYY-MM-DD). |
description | The complete posting body as plain text — never truncated, never summarised. |
descriptionHtml | The posting body as the source's own markup, preserving lists, headings and links. |
workType | Working arrangement: "remote", "hybrid" or "onsite". |
custom | Facts only this source publishes, as {"schemaId", "data"}. |
A run also emits diagnostic rows — recordType: "diagnostic" with a
warnings array — when it has something to report, such as a source
returning nothing. They are never billed and are easy to filter out on
recordType.
Pricing
The existing Actor start event still applies. A result event is charged only for each posting delivered; diagnostic rows are never charged as results.