# Drushim Israel Jobs Scraper (`parsebird/drushim-israel-jobs-scraper`) Actor

Scrape jobs from Drushim.co.il (Israel). Search in Hebrew or English, filter by category, region, scope, and experience, and get full HTML/text/markdown descriptions, requirements, salary, coordinates, and company details. Incremental mode. Export as JSON, CSV, or Excel.

- **URL**: https://apify.com/parsebird/drushim-israel-jobs-scraper.md
- **Developed by:** [ParseBird](https://apify.com/parsebird) (community)
- **Categories:**
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 1 bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.79 / 1,000 job scrapeds

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

### Drushim Israel Jobs Scraper

Scrape job vacancies from **[Drushim.co.il](https://www.drushim.co.il)** — Israel's leading job board — into clean, structured JSON. The Drushim Israel Jobs Scraper searches in Hebrew or English and returns the job title, hiring company, region, salary, GPS coordinates, and the full description and requirements, with no login and no Drushim API key.

<table><tr>
<td style="border-left:4px solid #EC1C24;padding:12px 16px;font-weight:600">
Search Drushim by keyword (Hebrew or English), category, region, scope, and experience — get full HTML / text / markdown descriptions, requirements, coordinates, and company details, with a GPS radius filter and incremental change tracking.
</td>
</tr></table>

##### Copy to your AI assistant

Copy this block into ChatGPT, Claude, Cursor, or any LLM to start using this actor.

```
Actor: parsebird/drushim-israel-jobs-scraper (Apify). Scrapes jobs from drushim.co.il. Call with ApifyClient.
Input JSON fields:
  query: string — keyword in Hebrew or English, or a JSON array string like "[\"developer\",\"מפתח\"]"
  location: string — city/region in Hebrew or English (or a JSON array string)
  lat / lon: number, radiusKm: int — keep only jobs within radiusKm of (lat, lon)
  maxResults: int (default 25, 0 = unlimited) — number of billed rows
  maxPages: int (default 10, 10 jobs per page)
  category: string code (1..30, e.g. "6" = HiTech-Software, "1" = Admin & Office)
  subCategory: int, area: string code (1 Center, 2 Jerusalem, 3 North, 4 South, 13 Abroad, 16 Sharon, 17 Shfela, 21 Judea & Samaria)
  scope: string code (1 Full-time, 2 Part-time, 3 Temporary, 4 Shifts, 5 Remote, 6 Hybrid)
  experience: string code (1 none, 2 1-2y, 3 3-4y, 4 5-6y, 5 7y+)
  noCvRequired: bool
  includeDetails: bool (default true), descriptionMaxLength: int, descriptionFormat: "all"|"text"|"html"|"markdown"
  compact: bool, excludeEmptyFields: bool, phoneExtractionMode: "strict"|"lenient"
  incrementalMode: bool, stateKey: string, emitUnchanged: bool, emitExpired: bool
  proxyConfiguration: { "useApifyProxy": true, "apifyProxyGroups": ["RESIDENTIAL"], "apifyProxyCountry": "IL" }
Output: one item per job — jobId, jobCode, title, company, companyCode, companyLogoUrl, companyProfileUrl, location, locationEnglish, region, regionEnglish, regions[], cities[], latitude, longitude, description, descriptionHtml, descriptionMarkdown, requirements, requirementsHtml, phones[], category, categoryCode, subCategory, experience, experienceCode, scopes[], scopeCodes[], employmentType, salary, isRemote, isHybrid, isSponsored, isHot, isExpired, allowNoCv, portalUrl, applyUrl, postedDate, contentHash, changeType, searchQuery, source, scrapedAt.
Example: { "query": "מפתח", "maxResults": 50 }
API: https://api.apify.com/v2/acts/parsebird~drushim-israel-jobs-scraper  ·  Token: https://console.apify.com/account/integrations
```

### What does Drushim Israel Jobs Scraper do?

[Drushim.co.il](https://www.drushim.co.il) is one of Israel's largest job boards, with tens of thousands of live vacancies across hi-tech, finance, healthcare, sales, and more. There is no public Drushim API — this Drushim scraper reads the site's own search feed and returns:

- 📝 **Job content** — full description and requirements in HTML, clean text, and markdown.
- 🏢 **Employer** — company name, code, logo, and profile page.
- 📍 **Location** — city (Hebrew and English), region (Hebrew and English), and GPS coordinates.
- 💼 **Terms** — category, sub-category, experience level, and every employment scope (full-time, part-time, remote, hybrid…).
- 🏷️ **Flags** — remote, hybrid, sponsored, hot, expired, and "no CV required".
- 📞 **Phones** — any phone numbers found in the description (strict or lenient).
- ♻️ **Change tracking** — incremental mode emits only new, updated, or removed jobs.

Common uses: Israeli recruitment-market research, building a hi-tech job feed, salary and skills analysis, and monitoring hiring at specific companies.

### Input parameters

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| query | string | No | — | Keyword in Hebrew or English. JSON array string for several. |
| location | string | No | — | City or region in Hebrew or English. |
| lat / lon / radiusKm | number / number / integer | No | — | Keep only jobs within `radiusKm` of the point. Jobs with no coordinates are kept. |
| maxResults | integer | No | 25 | Maximum jobs to return (0 = unlimited). Billed rows. |
| maxPages | integer | No | 10 | Maximum search pages per query (10 jobs per page). |
| category | string | No | — | Drushim category code (1–30). |
| subCategory | integer | No | — | Sub-category code within the category. |
| area | string | No | — | Region code. |
| scope | string | No | — | Employment scope code. |
| experience | string | No | — | Experience level code. |
| noCvRequired | boolean | No | false | Only jobs that don't require a CV. |
| includeDetails | boolean | No | true | Include HTML / markdown descriptions. |
| descriptionMaxLength | integer | No | 0 | Truncate plain text to N characters (0 = no limit). |
| descriptionFormat | string | No | all | Keep one description representation. |
| compact | boolean | No | false | Output only core fields. |
| excludeEmptyFields | boolean | No | false | Drop null / empty fields. |
| phoneExtractionMode | string | No | strict | `strict` or `lenient`. |
| incrementalMode | boolean | No | false | Only emit new / changed jobs. |
| stateKey | string | No | auto | Identifier for incremental state. |
| emitUnchanged / emitExpired | boolean | No | false | Also emit unchanged / removed jobs. |
| proxyConfiguration | object | No | Residential IL | Israeli residential proxy (required). |

#### Category codes

`1` Admin & Office · `2` Senior Management · `3` Skilled Trades · `4` HiTech - Hardware · `5` HiTech - General · `6` HiTech - Software · `7` Training & Education · `9` Finance & Capital Markets · `10` Engineering · `11` Customer Service · `13` Human Resources · `16` Medicine & Health · `17` Sales · `18` Industry & Manufacturing · `21` Logistics & Shipping · `23` Insurance · `24` HiTech - QA · `25` Security & Guarding · `27` Marketing · `28` Internet · `29` Automotive & Transport · `30` Information Security.

#### Example inputs

Basic search:

```json
{ "query": "מפתח", "maxResults": 50 }
```

HiTech-Software jobs in Jerusalem with 3–4 years' experience:

```json
{ "query": "developer", "category": "6", "area": "2", "experience": "3", "maxResults": 100 }
```

Incremental tracking:

```json
{ "query": "מפתח", "maxResults": 200, "incrementalMode": true, "stateKey": "dev-tracker" }
```

Compact output for an AI agent:

```json
{ "query": "מפתח", "category": "6", "compact": true, "maxResults": 50 }
```

### What data can you extract from Drushim?

| Field | Description |
|-------|-------------|
| jobId / jobCode | Drushim job identifiers |
| title / fullTitle | Job title |
| company / companyCode / companyLogoUrl / companyProfileUrl | Employer identity |
| location / locationEnglish | Primary city (Hebrew and English) |
| region / regionEnglish / regions / cities | Zone and all listed regions / cities |
| latitude / longitude | Primary job coordinates |
| description / descriptionHtml / descriptionMarkdown | Job description in three formats |
| requirements / requirementsHtml | Requirements |
| phones | Phone numbers found in the text |
| category / subCategory (+ codes) | Job classification |
| experience (+ code) | Required experience level |
| scopes / scopeCodes / employmentType | Employment scope(s) |
| salary | Salary value when published |
| isRemote / isHybrid / isSponsored / isHot / isExpired / allowNoCv | Flags |
| portalUrl / applyUrl | Job page and apply link |
| postedDate | Publication timestamp (UTC) |
| contentHash / changeType | Change-tracking hash and status |
| source / scrapedAt | Source label and collection timestamp |

### Output example

```json
{
  "jobId": "drushim-37243651",
  "jobCode": 37243651,
  "title": "מפתח/ת אוטומציה",
  "company": "Matrix R&D Services",
  "companyCode": 3795424,
  "location": "תל אביב",
  "locationEnglish": "Tel Aviv",
  "region": "מרכז",
  "regionEnglish": "Center",
  "latitude": 32.048725,
  "longitude": 34.814985,
  "description": "דרוש/ה מפתח/ת אוטומציה לארגון ביטחוני מוביל...",
  "descriptionHtml": "דרוש/ה מפתח/ת אוטומציה לארגון ביטחוני מוביל<br/>...",
  "requirements": "מעל ארבע שנות ניסיון בפיתוח אוטומציה...",
  "category": "הייטק-תוכנה",
  "subCategory": "מפתח/ת כלי בדיקות",
  "experience": "5-6 שנים",
  "experienceCode": 4,
  "scopes": ["משרה מלאה"],
  "employmentType": "Full-time",
  "isRemote": false,
  "isSponsored": true,
  "isExpired": false,
  "portalUrl": "https://www.drushim.co.il/job/37243651/57181f53/",
  "applyUrl": "https://www.drushim.co.il/sendcv.aspx?jobcode=37243651",
  "postedDate": "2026-06-02T18:35:31.970Z",
  "source": "drushim.co.il",
  "changeType": "snapshot"
}
```

Download the dataset as **JSON, CSV, Excel, HTML, or XML** from the Storage tab or the [Apify API](https://docs.apify.com/api/v2).

### Use cases

- **Israeli hi-tech job feed** — power a Telegram channel, newsletter, or dashboard.
- **Salary and demand research** — analyse experience levels, scopes, and regions by category.
- **Company monitoring** — search a company name and track every role it posts (incremental mode).
- **Relocation search** — use the GPS radius filter to find jobs near a specific address.

### How it works

1. **Search** — Drushim's search feed is queried with your keyword(s) and filters, 10 jobs per page.
2. **Shape** — each result already carries the full description, requirements, coordinates, and company details; they are flattened into a clean record with three description formats.
3. **Geo filter** — if `lat` / `lon` / `radiusKm` are set, jobs outside the radius are dropped.
4. **Incremental** — each job's tracked content is hashed and compared against the stored state for its `stateKey`.
5. Rows stream to the dataset and stop at `maxResults`.

### How much does it cost to scrape Drushim?

This actor is **pay per result** — charged once per job record emitted.

| Plan | Price per 1,000 jobs |
|------|----------------------|
| Free | **$0.99** |
| Bronze | **$0.89** |
| Silver | **$0.89** |
| Gold | **$0.79** |

A small platform **Actor start** fee also applies per run. `maxResults` is the exact number of billed rows. Scraping 1,000 jobs on the Free plan costs about **$0.99**. Apify's monthly free platform usage covers small runs.

### How to scrape Drushim

1. Click **Try for free** and sign in to Apify.
2. Enter a **search term** in Hebrew or English (or leave it blank and pick a category).
3. Optionally set **category**, **region**, **scope**, or **experience**.
4. Set **Max results** (start low, e.g. 25).
5. Click **Start**, then watch rows appear in the **Output** tab.
6. Export from **Storage**, or pull results via the API.

#### Run it via API

Python:

```python
from apify_client import ApifyClient

client = ApifyClient("<YOUR_APIFY_TOKEN>")
run = client.actor("parsebird/drushim-israel-jobs-scraper").call(run_input={
    "query": "מפתח",
    "category": "6",
    "maxResults": 100,
})
for job in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(job["title"], "-", job["company"], "-", job.get("region"))
```

JavaScript:

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

const client = new ApifyClient({ token: '<YOUR_APIFY_TOKEN>' });
const run = await client.actor('parsebird/drushim-israel-jobs-scraper').call({
    query: 'developer',
    incrementalMode: true,
    stateKey: 'dev-tracker',
    maxResults: 200,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);
```

Schedule recurring runs, add webhooks, or push results to Google Sheets, Slack, Zapier, and Make with [Apify integrations](https://docs.apify.com/platform/integrations).

### FAQ

**Do I need a Drushim account or API key?**
No. The scraper reads Drushim's public search feed only.

**Why do I need an Israeli residential proxy?**
Drushim.co.il blocks non-Israeli and datacenter IP ranges. The input defaults `proxyConfiguration` to Israeli residential — leave it on.

**Can I search in English?**
Yes. Drushim indexes both Hebrew and English; you can also pass a JSON array string to search several terms in one run.

**How does incremental mode decide what changed?**
Each job's title, company, description, requirements, and scopes are hashed. A run emits jobs whose hash is new (`new`) or different (`updated`); set `emitUnchanged` / `emitExpired` to also get the rest.

**Something's not working.**
Open an issue on the **Issues** tab with your input and the run link — we respond quickly.

### Is it legal to scrape Drushim?

Scraping publicly available pages is legal in most jurisdictions, and this actor only reads Drushim's public search results — no login, no private data. You are responsible for how you use the data — respect Drushim's Terms of Use and Israeli privacy law when handling any personal data (including phone numbers), and consult a lawyer if you are unsure. See Apify's guide on [the legality of web scraping](https://blog.apify.com/is-web-scraping-legal/).

### Related actors

- [AllJobs.co.il Jobs Scraper](https://apify.com/parsebird/alljobs-il-scraper) — the other major Israeli job board.
- [Indeed Jobs Scraper](https://apify.com/parsebird/indeed-jobs-scraper) — job listings from Indeed worldwide.
- [hh.ru Jobs Scraper](https://apify.com/parsebird/hh-ru-jobs-scraper) — vacancies from HeadHunter.
- [Instahyre Jobs Scraper](https://apify.com/parsebird/instahyre-jobs-scraper) — India tech jobs.

Browse all [ParseBird actors](https://apify.com/parsebird) on Apify Store.

# Actor input Schema

## `query` (type: `string`):

Job keyword in Hebrew or English (e.g. "developer", "מפתח"). For several terms pass a JSON array, e.g. \["developer", "מפתח"].

## `location` (type: `string`):

City or region in Hebrew or English (e.g. "Tel Aviv", "תל אביב"). JSON array for several.

## `lat` (type: `number`):

GPS latitude of the search centre. Pair with Longitude and Search Radius.

## `lon` (type: `number`):

GPS longitude of the search centre. Pair with Latitude.

## `radiusKm` (type: `integer`):

Keep only listings within this many km of (Latitude, Longitude). Listings with unknown coordinates are always kept.

## `maxResults` (type: `integer`):

Maximum job listings to return. 0 = unlimited. This is the number of billed rows.

## `maxPages` (type: `integer`):

Maximum search result pages per query (10 jobs per page). Safety bound.

## `category` (type: `string`):

Drushim job category. Leave blank for all.

## `subCategory` (type: `integer`):

Numeric sub-category code within the selected category (see drushim.co.il for valid values).

## `area` (type: `string`):

Geographic region filter.

## `scope` (type: `string`):

Employment scope / work arrangement.

## `experience` (type: `string`):

Required experience level.

## `noCvRequired` (type: `boolean`):

Only show jobs that don't require uploading a CV.

## `includeDetails` (type: `boolean`):

Include the HTML and markdown description / requirements. Disable for smaller output.

## `descriptionMaxLength` (type: `integer`):

Truncate plain-text description / requirements to this many characters. 0 = no truncation.

## `descriptionFormat` (type: `string`):

Keep one description representation. "all" keeps every variant.

## `compact` (type: `boolean`):

Output only core fields (for AI-agent / MCP workflows).

## `excludeEmptyFields` (type: `boolean`):

Drop null / empty-string / empty-array fields from each record.

## `phoneExtractionMode` (type: `string`):

Strict (Tel: / +972 prefix only) or Lenient (also bare local numbers).

## `incrementalMode` (type: `boolean`):

Only return new and changed jobs since the last run with this state key.

## `stateKey` (type: `string`):

Unique identifier for incremental state. Defaults to a hash of your search.

## `emitUnchanged` (type: `boolean`):

In incremental mode, also emit jobs that have not changed.

## `emitExpired` (type: `boolean`):

In incremental mode, also emit jobs that disappeared since the last run.

## `proxyConfiguration` (type: `object`):

Drushim.co.il blocks non-Israeli and datacenter IPs — an Israeli residential proxy is required and set by default.

## Actor input object example

```json
{
  "query": "מפתח",
  "maxResults": 25,
  "maxPages": 10,
  "noCvRequired": false,
  "includeDetails": true,
  "descriptionMaxLength": 0,
  "descriptionFormat": "all",
  "compact": false,
  "excludeEmptyFields": false,
  "phoneExtractionMode": "strict",
  "incrementalMode": false,
  "emitUnchanged": false,
  "emitExpired": false,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ],
    "apifyProxyCountry": "IL"
  }
}
```

# Actor output Schema

## `dataset` (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 = {
    "query": "מפתח",
    "location": "",
    "maxResults": 25,
    "maxPages": 10
};

// Run the Actor and wait for it to finish
const run = await client.actor("parsebird/drushim-israel-jobs-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 = {
    "query": "מפתח",
    "location": "",
    "maxResults": 25,
    "maxPages": 10,
}

# Run the Actor and wait for it to finish
run = client.actor("parsebird/drushim-israel-jobs-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 '{
  "query": "מפתח",
  "location": "",
  "maxResults": 25,
  "maxPages": 10
}' |
apify call parsebird/drushim-israel-jobs-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,parsebird/drushim-israel-jobs-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/jbvJOA5x2qlCXkphQ/builds/LRnGOQ9qdA5rKwXG7/openapi.json
