Job Opportunities API for WordPress
Fill a WP Job Manager job board with employer-direct jobs on a schedule.
- Official
- Open source
- No code
WordPress with the free WP Job Manager plugin · plugin version 1.0.1 · submitted to the WordPress.org plugin directory (in review)
Set it up in 4 steps
You need a free API key (no card) — get one here.
Install the plugin
Install and activate WP Job Manager. Then download the plugin zip above and upload it in Plugins → Add New → Upload Plugin, and activate it.
Connect your free key
The plugin adds its settings for Job Opportunities API (JOA) under Job Listings → JOA Import. Paste your free API key there, save, and press Test connection.
Add a saved search and run it
Add a saved search (for example country DE, remote = remote, category Engineering) with a small number of jobs per run, press Run import now, and check Job Listings. The schedule keeps the board fresh from then on and expires roles that close.
Optional: run it from the command line
The plugin ships a WP-CLI command for cron jobs and dry runs.
WP-CLIwp joawpjm import --dry-run wp joawpjm import wp joawpjm status
Example: for job boards
A niche board for remote engineering roles in Germany adds one saved search (country DE, remote = remote, category Engineering), imports twice a day, and gets ordinary WP Job Manager listings whose apply button goes straight to the employer. When an employer closes a role, the plugin expires the listing, so the board does not fill up with dead jobs.
Example: for AI agents
Because the imported jobs are normal WordPress posts, anything that already reads WordPress (the REST API, a site-search plugin, or an AI assistant connected to the site) can answer questions about them. For an agent that should query the full dataset directly, use the MCP server instead.
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.
Will it create duplicate listings?
No. Each job is stored once, keyed by its Job Opportunities API id, even when two saved searches find the same role; later runs update the existing listing instead of adding a new one.
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. The plugin always shows the Erioun for Teams line. It can add the "Data: Job Opportunities API" credit under every imported listing: tick "Show 'Data: Job Opportunities API' credit" at the top of its Settings tab (or click "Show the credit" in its notice). It stays off until you switch it on, as WordPress.org rules require.
Related integrations
Get a free API key
No card. The same key works for every integration on this site.

