# aijobs.net AI/ML Jobs Scraper (`parseforge/aijobs-net-scraper`) Actor

Scrapes AI, ML, and data science job listings from aijobs.net by keyword search. Returns each job as a flat row with salary, remote policy, tech stack, and apply URL.

- **URL**: https://apify.com/parseforge/aijobs-net-scraper.md
- **Developed by:** [ParseForge](https://apify.com/parseforge) (community)
- **Categories:** Jobs, Other
- **Stats:** 6 total users, 1 monthly users, 90.3% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $19.00 / 1,000 results

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.
The best way to integrate Actors is as follows.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).

# README

[![ParseForge](https://raw.githubusercontent.com/ParseForge/apify-assets/main/banner.jpg)](https://apify.com/parseforge?fpr=vmoqkp)

### aijobs.net AI/ML Jobs Scraper

**Scrape AI, ML, and data science jobs from aijobs.net, filtered by keyword, up to a million per run.** Every listing returns the job title, company, salary range, remote policy, tech stack, and apply URL. Export to CSV, JSON, Excel, or XML.

aijobs.net is the specialist board for artificial intelligence and machine learning roles, but browsing it manually means you miss new posts or cannot filter across all fields at once. This actor reads the public job feed directly, lets you search by title or keyword, and stops when you have enough matches. It returns a clean, flat dataset ready for analysis or alerts.

| Who uses it | What they scrape aijobs.net for |
|---|---|
| Job seekers | Monitor aijobs.net for new roles matching their exact skills and preferred remote policy. |
| Recruiters | Build a pipeline of open AI positions and the companies hiring for them. |
| Market analysts | Track which AI subfields and tools employers are demanding this quarter. |
| HR tools and job boards | Ingest a clean feed of AI-specific listings to power their own search or alert features. |

### What it does

This Actor collects AI, ML, and data science job listings from aijobs.net by keyword search and returns each one as a flat row.

- 🔍 **Keyword search:** filter listings by job title or any keyword, such as "machine learning" or "LLM".
- 📊 **Structured output:** every row includes salary range, seniority, remote policy, tech stack tags, and company info.
- ⚙️ **Flexible volume:** set a maximum number of jobs to collect, from a quick sample to a full board scrape.

Results export to CSV, JSON, Excel, or XML, or straight from the API.

### What you can do with aijobs.net data

**📈 Monitor the AI job market.**

A market analyst runs the actor weekly with a broad keyword to count listings by seniority and salary band, spotting hiring trends before quarterly reports.

**🎯 Find your next AI role.**

A job seeker sets a keyword like "computer vision" and a low maxItems to get a daily digest of fresh, relevant posts without scrolling pages.

**🏢 Map the competitive landscape.**

A recruiter scrapes all listings for a set of tech stack tags to identify which companies are building teams around specific tools.

**🔔 Power a job alert bot.**

A developer schedules the actor and pipes the JSON output into a Slack or email notification for their community.

### Why choose this scraper

| | What you get |
|---|---|
| **Specialist AI board** | Only jobs from aijobs.net, the dedicated AI/ML career board. |
| **Keyword precision** | Filter by job title or any term to narrow results to your niche. |
| **Rich job fields** | Salary, remote policy, seniority, and tech stack are extracted per listing. |
| **No API key needed** | Reads the public website, so there is no registration or rate-limit headache. |

### How it compares

This actor focuses exclusively on aijobs.net with a simple keyword search, while the alternatives either scrape the same single source or bundle it with several other boards.

| Feature | ParseForge | Aijobs.net AI & ML Job Listings Scraper | AI & ML Engineer Jobs Scraper - 8 Boards in One |
|---|---|---|---|
| Scrapes aijobs.net | Yes | Yes | Yes |
| Keyword search filter | Yes | Not listed | Not listed |
| Salary range extraction | Yes | Yes | Yes |
| Remote policy field | Yes | Yes | Yes |
| Tech stack tags | Yes | Yes | Not listed |
| Single-board focus | Yes | Yes | No (aggregates 8 boards) |

### Configure the run

Drive the Actor with a keyword search query and a maximum item count, and filtering runs as each post is read so only matches reach your dataset. The Input tab lists every parameter.

A first run with the defaults:

```json
{
 "maxItems": 10
}
```

A larger pull:

```json
{
 "maxItems": 200
}
```

### Pricing

Pay-per-result: **$0.021 per result** collected. You pay only for the results written to your dataset.

| Results collected | Approximate cost |
|---|---|
| 100 results | $2.10 |
| 1,000 results | $21.00 |
| 10,000 results | $210.00 |

New Apify accounts start with $5 in free credit.

### Free users

Free-plan runs return up to 10 results as a preview. [Upgrade your Apify plan](https://console.apify.com/sign-up?fpr=vmoqkp) to collect up to 1,000,000 results per run.

### Run it

1. [Create a free Apify account with $5 in credit](https://console.apify.com/sign-up?fpr=vmoqkp).
2. Open the [aijobs.net AI/ML Jobs Scraper](https://apify.com/parseforge/aijobs-net-scraper?fpr=vmoqkp).
3. Set your inputs and any filters, then click **Start**.
4. Export the results as CSV, Excel, JSON, or XML from the **Dataset** tab.

Run it programmatically through the [Apify API](https://docs.apify.com/api/v2) (`run-sync-get-dataset-items`) or the [ApifyClient](https://docs.apify.com/api/client/js) for JavaScript and Python.

### Use with AI agents (MCP)

Give an AI agent live access to aijobs.net through the Model Context Protocol. Add the Actor to Claude, Cursor, or any MCP client:

```bash
claude mcp add --transport http apify "https://mcp.apify.com/?tools=parseforge/aijobs-net-scraper"
```

Then prompt it in plain language to run the scraper and read back the results.

### Troubleshooting

**Why am I getting no results?**

Your search query may be too specific or contain a typo. Try a broader keyword, such as "AI" or "engineer", and check the spelling. Also confirm that aijobs.net is reachable from your browser.

**The actor returns fewer jobs than my maxItems setting.**

The actor stops when it has collected the number of jobs you requested or when it has read all listings matching your query, whichever comes first. If the board has fewer matching posts, the run will finish early.

**Some fields like salary or tech stack are empty in the output.**

Not every job listing on aijobs.net includes a salary range or tech stack tags. The actor extracts what the employer provides. Empty fields mean the information was not present on the original post.

**The run fails with a timeout or error.**

The website may have changed its layout. Try the run again after a few minutes. If the error persists, check the actor's issue tracker on Apify or contact the developer with the run log.

### FAQ

| Question | Answer |
|---|---|
| Does this scraper need an aijobs.net account or API key? | No. It reads the public job listings that are visible to anyone visiting aijobs.net. No login, API key, or registration is required. |
| What job fields does the actor return? | Each row includes the job title, company name, salary range, seniority level, remote policy, tech stack tags, location, and the direct apply URL. The exact fields are shown in the sample output on the actor's page. |
| Can I filter by location or remote-only roles? | The input accepts a free-text keyword. You can use terms like "remote" or a city name as your search query. The actor will return listings whose text matches that term. |
| How many job listings can I scrape in one run? | You control the volume with the 'Maximum jobs' setting. Set it to 10 for a quick check or up to 1,000,000 to pull every available listing that matches your search. |
| Can I run this on a schedule? | Yes. Once you have configured the actor, you can set it to run every hour, day, or week using Apify's built-in scheduler. |
| What output formats are supported? | Your dataset can be exported to CSV, JSON, Excel, or XML from the Apify run console. |
| Does the actor deduplicate listings across runs? | The actor scrapes the live site each time. To track only new listings, you can use Apify's dataset comparison tools or store seen job URLs in a key-value store and filter them in your downstream code. |
| Is this an official aijobs.net tool? | No. This is an unofficial scraper built by the Apify community to read publicly available data from aijobs.net. |

### Related actors

Browse the full [ParseForge collection](https://apify.com/parseforge?fpr=vmoqkp) for more scrapers.

🆘 **Need help?** Email parseforge@protonmail.com with your run ID, your input, and what you expected.

⚠️ **Disclaimer.** This Actor is unofficial and is not affiliated with, endorsed by, or sponsored by aijobs.net. It collects only publicly available data. You are responsible for using the collected data in compliance with the source's terms of service and applicable data-protection laws, including GDPR, CCPA, and PIPL. Do not use it to collect personal data unlawfully.

# Actor input Schema

## `maxItems` (type: `integer`):

How many job listings to collect per run.

## `searchQuery` (type: `string`):

Optional keyword filter (e.g. "machine learning").

## Actor input object example

```json
{
  "maxItems": 10,
  "searchQuery": ""
}
```

# Actor output Schema

## `results` (type: `string`):

No description

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "maxItems": 10
};

// Run the Actor and wait for it to finish
const run = await client.actor("parseforge/aijobs-net-scraper").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = { "maxItems": 10 }

# Run the Actor and wait for it to finish
run = client.actor("parseforge/aijobs-net-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "maxItems": 10
}' |
apify call parseforge/aijobs-net-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,parseforge/aijobs-net-scraper"
        }
    }
}

```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/WcjhvZ63b0MLaieKh/builds/cfImYctWUvuPLFwor/openapi.json
