# Drushim.co.il Scraper — Israel Job Listings (`bovi/drushim-co-il-scraper`) Actor

Scrapes structured job listings from Drushim.co.il search results via its JSON API.

- **URL**: https://apify.com/bovi/drushim-co-il-scraper.md
- **Developed by:** [Vitalii Bondarev](https://apify.com/bovi) (community)
- **Categories:** Jobs, Lead generation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.26 / 1,000 job-listings

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/platform/actors/running/actors-in-store#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.co.il Scraper — Israel Job Listings

This actor collects job listings from Drushim.co.il, one of Israel's largest job boards (operated by the
Yad2 group). It calls Drushim's internal JSON search API directly and extracts every entry returned in
`ResultList` — no browser, no HTML parsing, no job-detail-page requests. `RecommendedJobs` entries are not
collected, so every delivered record is a real, searched-for listing. Use it for recruiter lead lists,
market/salary-band research (Israel hi-tech and general labor market), competitor hiring intelligence, or
feeding job data into your own job board or ATS integration.

#### Features

- **Full-text + faceted search** against Drushim's live index (keyword search today; category/region/
  employment-type/experience filters are supported by the underlying API for future input expansion).
- **54 structured fields per listing** — identity, employer, dates, geo (region/zone/city/lat-lon),
  classification (category/sub-category), experience level, employment type/arrangement, listing flags
  (sponsored/hot/top/expired), full description in three formats (HTML/plain/Markdown), and a content hash
  for change detection.
- **$0-COGS official/internal-API access** — no residential proxy fragility, no anti-bot arms race; the
  actor talks to the same JSON endpoint the Drushim.co.il website itself uses.
- **Pay only for delivered listings** — every chargeable event is a validated, deduplicated job record.

#### How to use

1. Open the actor and enter a `searchTerm` (defaults to `developer` so a first run works with zero
   configuration).
2. Set `maxResults` (how many listings to deliver) and `pagesToFetch` (how many result pages to pull).
3. Click **Start**. Default input returns results in well under a minute.
4. Export the dataset as JSON/CSV/Excel, or pull it via the Apify API/SDK.

#### Pricing

This actor uses pay-per-event billing. Each delivered job-listing event costs **USD 0.0013** — a launch
undercut of the category comparator's live per-record price ($0.00149/record, i.e. $1.49/1k), computed via
the fleet's Pricing Engine v2 (cheapest-anchor mode, 0 reviews, quality parity 1.0). Scraping 1,000 job
listings costs approximately **$1.30**.

#### Input & Output example

**Input:**

```json
{
  "searchTerm": "developer",
  "maxResults": 50,
  "pagesToFetch": 1
}
```

**Output (one item, abridged):**

```json
{
  "jobId": 37572693,
  "title": "QA Automation Engineer",
  "company": "QuaityAI",
  "url": "https://www.drushim.co.il/job/37572693/0b47173a/",
  "applyUrl": "https://www.drushim.co.il/sendcv.aspx?jobcode=37572693",
  "primaryCity": "כרמיאל",
  "primaryCityEn": "Karmiel",
  "zone": "North",
  "employmentType": "משרה מלאה",
  "experience": "1-2 שנים",
  "categories": ["הייטק-תוכנה", "הייטק-QA"],
  "isRemote": false,
  "isHybrid": false,
  "datePosted": "2026-06-30",
  "description": "...",
  "source": "drushim.co.il",
  "scrapedAt": "2026-07-18T03:41:44.802818+00:00"
}
```

Full field groups:

- **Identity and application:** Job ID, title, listing URL, application URL, external-application indicator, and employer job code.
- **Employer:** Company name, company code, company URL, logo URL, and confidential-employer flag.
- **Dates:** `datePosted` reflects the listing's current or bumped date when supplied by Drushim. `dateActual` and `firstPublishedDate` preserve the original publication timing. `postingAge` represents the available posting-age value.
- **Location:** Region and region codes, zones, Hebrew zone names, cities, primary city names, and latitude/longitude where available.
- **Classification:** Categories, category codes, subcategories, and subcategory codes.
- **Experience:** Experience description and code, plus the `allowNoCv` indicator.
- **Employment and work arrangement:** Employment type and codes, `isRemote`, and `isHybrid`.
- **Listing flags:** Hitech, sponsored, top-job, hot-job, expired, and classified-job indicators.
- **Description:** HTML, plain-text, and Markdown descriptions, together with requirements when provided.
- **Compensation:** `salaryRange`, `salaryMin`, `salaryMax`, `salaryRaw`, and `currency`. Salary fields are always `null` — Drushim listings do not publish salary data (true for every actor reading this source, not a limitation of this scraper).
- **Source metadata:** `source`, `scrapedAt`, and `contentHash`. The hash identifies the collected listing content and can help detect changes.

#### Inputs

- `searchTerm`: Search keyword or phrase submitted to Drushim.co.il.
- `maxResults`: Maximum number of job listings to deliver.
- `pagesToFetch`: Number of JSON search-result pages to request.
- `proxyConfiguration`: Proxy settings for API requests. The default proxy group is `RESIDENTIAL`; the configuration intentionally does not pin requests to a country.

#### FAQ / Disclaimer

- **Does this include salary data?** No — Drushim.co.il does not publish salary figures on listings, so
  the salary fields are always present in the schema but empty. This matches the source data, not a gap in
  extraction.
- **Is this affiliated with Drushim.co.il?** No. This is an independent data-collection tool built against
  Drushim's public search API; it is not endorsed by or affiliated with Drushim.co.il or the Yad2 group.
- **Support:** open an Issue on the actor's Apify Store page for bugs or field requests.

# Actor input Schema

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

Maximum number of results to collect.

## `pagesToFetch` (type: `integer`):

Number of result pages to fetch.

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

Residential Apify proxy settings; country is intentionally not pinned.

## `searchTerm` (type: `string`):

Keyword to search for on Drushim.co.il.

## Actor input object example

```json
{
  "maxResults": 20,
  "pagesToFetch": 1,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  },
  "searchTerm": "developer"
}
```

# Actor output Schema

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

Dataset with the scraped records.

# 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 = {
    "maxResults": 20,
    "pagesToFetch": 1,
    "proxyConfiguration": {
        "useApifyProxy": true,
        "apifyProxyGroups": [
            "RESIDENTIAL"
        ]
    },
    "searchTerm": "developer"
};

// Run the Actor and wait for it to finish
const run = await client.actor("bovi/drushim-co-il-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 = {
    "maxResults": 20,
    "pagesToFetch": 1,
    "proxyConfiguration": {
        "useApifyProxy": True,
        "apifyProxyGroups": ["RESIDENTIAL"],
    },
    "searchTerm": "developer",
}

# Run the Actor and wait for it to finish
run = client.actor("bovi/drushim-co-il-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 '{
  "maxResults": 20,
  "pagesToFetch": 1,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  },
  "searchTerm": "developer"
}' |
apify call bovi/drushim-co-il-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,bovi/drushim-co-il-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/dFkh9lhNAZYtFeZsp/builds/5MMAxU1XiiN8KMLqB/openapi.json
