# AllJobs Israel Scraper - Jobs, Employers & Salaries (`memo23/alljobs-scraper`) Actor

Scrape jobs from AllJobs (alljobs.co.il), Israel's largest job board. Get title, employer, location, employment type, industry, dates and full description. Search by profession keyword or paste AllJobs URLs. No proxy setup. JSON or CSV, pay per result.

- **URL**: https://apify.com/memo23/alljobs-scraper.md
- **Developed by:** [Muhamed Didovic](https://apify.com/memo23) (community)
- **Categories:** Jobs
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $2.00 / 1,000 jobs

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

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

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
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.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## 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.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

## AllJobs Israel Scraper — Jobs, Employers, Locations & Salaries

Scrape **AllJobs** (`alljobs.co.il`), Israel's largest job board, by profession keyword or from pasted AllJobs URLs. Get the job title, employer, location, employment type, industry, posting and expiry dates, and the full job description — one clean row per vacancy. No proxy setup, no login.

Built for recruiters, sourcers, labour-market analysts and job-alert products that need AllJobs data as structured JSON instead of clicking through the site in Hebrew.

### Why use this scraper

- **Search by profession, in any language.** Type `python`, `QA`, `DevOps` or a Hebrew profession like `מתכנת` — the actor maps it to AllJobs' own job categories automatically.
- **Full structured detail.** Every row carries the employer, city, employment type, industry, posting and expiry dates, and the complete description, read from each job's structured data.
- **Monitor mode that only bills for change.** Turn on *Only new or changed jobs* and each run delivers (and charges for) only postings that are new or updated since the last run.
- **Paste any AllJobs URL.** Drop in a search-results URL or a direct job URL and the actor auto-routes and paginates it.
- **No setup.** AllJobs has no bot gate, so there are no proxies or keys to configure.

### Overview

AllJobs is Israel's leading jobs marketplace. This actor resolves a profession keyword to the matching AllJobs categories (or takes your pasted URLs), pages through the results, reads each job's structured data, and returns one normalized row per vacancy. It handles Hebrew content and pagination automatically.

### Supported inputs

| Input | What it does |
|---|---|
| `searchTerms` | Professions to search, e.g. `python`, `QA`, `DevOps`, `מתכנת`. Matched to AllJobs categories. |
| `region` | Optional AllJobs region id to filter by. |
| `startUrls` | Paste AllJobs search (`SearchResultsGuest.aspx`) or job (`UploadSingle.aspx`) URLs — auto-routed. |
| `onlyChanged` | Monitor mode: deliver only jobs that are new or changed since the last run. |
| `maxItems` | Hard cap on jobs collected and billed. |
| `maxConcurrency` | Parallel requests. |

### Use cases

- **Recruitment & sourcing.** Pull live vacancies by profession and city to map who is hiring and for what.
- **Market research.** Track posting volume, employment types and industries across the Israeli market over time.
- **Job-alert & aggregator products.** Feed fresh AllJobs postings into an alerting or aggregation pipeline with monitor mode.
- **Competitive hiring intel.** See which employers and staffing agencies are actively recruiting in a field.

### How it works

1. Each profession keyword is matched to AllJobs' own job categories; pasted URLs are auto-classified.
2. Search pages are read and paginated until `maxItems` is reached.
3. Each job page is fetched and parsed from its structured data into a normalized row.
4. In monitor mode, a per-account store compares each job against the last run and skips unchanged ones before billing.

### Output sample

```json
{
  "type": "job",
  "source": "alljobs.co.il",
  "jobId": "8819178",
  "url": "https://www.alljobs.co.il/Search/UploadSingle.aspx?JobID=8819178",
  "title": "Senior Python Developer",
  "company": "TechTalent",
  "location": "רמת השרון",
  "locality": "רמת השרון",
  "region": "",
  "employmentType": ["FULL_TIME"],
  "datePosted": "2026-09-20T09:00",
  "validThrough": "2026-11-20T09:00",
  "industry": "מחשבים ורשתות",
  "salary": null,
  "description": "…",
  "scrapedAt": "2026-09-24T14:00:00.000Z"
}
```

### Key output fields

`jobId`, `title`, `company`, `location` / `locality` / `region`, `employmentType`, `industry`, `datePosted`, `validThrough`, `salary` (when published), `description`, `url`, `scrapedAt`.

### Pricing

Pay-per-event: a small per-run start fee plus a per-job charge. Monitor mode (`onlyChanged`) only bills for jobs that are actually new or updated, so recurring watch runs stay cheap.

### FAQ

**Do I need proxies?** No. AllJobs has no bot protection; the actor fetches directly.

**Can I search in English?** Yes — profession keywords match both English and Hebrew AllJobs categories.

**Is salary included?** Only when the employer publishes it; AllJobs frequently omits salary, so the field is often empty.

**How fresh is the data?** It reads AllJobs live at run time, so results reflect the site when the run starts.

### For AI agents & LLM apps

Every row is flat, typed JSON with a stable schema, ready for a retrieval pipeline, an agent tool call, or a spreadsheet without post-processing. Point an MCP-enabled agent at this actor to pull live Israeli job-market data on demand.

### ⚠️ Disclaimer

This actor collects only publicly available information from `alljobs.co.il`. Use the data in compliance with applicable laws and the source site's terms. You are responsible for how you use the scraped data, including any personal data.

### SEO Keywords

AllJobs scraper, alljobs.co.il scraper, Israel jobs API, Israeli job board scraper, jobs in Israel data, Hebrew job listings scraper, tech jobs Israel, recruitment data Israel, job postings Israel export, AllJobs monitor, Israel hiring data, מתכנת דרושים סקרייפר.

# Actor input Schema

## `searchTerms` (type: `array`):

Professions to search, e.g. `python`, `QA`, `DevOps`, `מתכנת`. Each is matched to AllJobs' own job categories.

## `region` (type: `string`):

AllJobs region id to filter by (advanced). Leave empty for all of Israel; or just paste a region-filtered search URL below.

## `startUrls` (type: `array`):

Paste AllJobs search-result URLs (`SearchResultsGuest.aspx?...`) or direct job URLs (`UploadSingle.aspx?JobID=...`) — each is auto-routed.

## `onlyChanged` (type: `boolean`):

Remember jobs between runs and deliver only those that are new or changed since the last run. Unchanged jobs are skipped before billing.

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

Hard cap on jobs collected (and billed).

## `maxConcurrency` (type: `integer`):

Parallel requests. AllJobs is a fast site with no anti-bot, so this can be high.

## Actor input object example

```json
{
  "searchTerms": [
    "python"
  ],
  "startUrls": [],
  "onlyChanged": false,
  "maxItems": 1000,
  "maxConcurrency": 10
}
```

# Actor output Schema

## `jobs` (type: `string`):

One row per AllJobs vacancy with title, employer, location, employment type, industry, dates and full 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 = {
    "searchTerms": [
        "python"
    ],
    "startUrls": []
};

// Run the Actor and wait for it to finish
const run = await client.actor("memo23/alljobs-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 = {
    "searchTerms": ["python"],
    "startUrls": [],
}

# Run the Actor and wait for it to finish
run = client.actor("memo23/alljobs-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 '{
  "searchTerms": [
    "python"
  ],
  "startUrls": []
}' |
apify call memo23/alljobs-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,memo23/alljobs-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/G8zSvXs8BagVVXIF8/builds/M1b1IlYJFTUN5Uz7a/openapi.json
