# Randstad.com Jobs \[Only $1] Scraper (`memo23/randstad-com-scraper`) Actor

Scrape Randstad.com jobs worldwide: extract job titles, descriptions, salaries, locations (country/region/city), company names, employment types, specialisms, job categories, posting dates, and client information from any country's Randstad site.

- **URL**: https://apify.com/memo23/randstad-com-scraper.md
- **Developed by:** [Muhamed Didovic](https://apify.com/memo23) (community)
- **Categories:** Jobs, Automation, Lead generation
- **Stats:** 13 total users, 0 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: 5.00 out of 5 stars

## Pricing

from $1.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.

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

## What's an Apify Actor?

Actors are a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
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.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp.md).

If your project is in a different language, use 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

## Randstad.com Job Scraper

### How it works

This actor allows you to scrape job listings from Randstad Global (https://www.randstad.com/jobs/) and extract important details such as job title, company, location, salary, industry, skills, qualifications, and other relevant data. The scraper is designed to help you gather comprehensive data on job vacancies posted by Randstad worldwide, which can be useful for job market research, recruitment, or analyzing employment trends across multiple countries.

### Features

- **Flexible URL-Based Search:** Simply provide Randstad.com search URLs with your desired filters
- **Advanced Filtering Support:** The scraper automatically handles all Randstad.com URL parameters including:
  - **Country:** Filter jobs by country (e.g., `belgium`, `canada`, `united-kingdom`)
  - **Keyword Search:** Search for specific job titles or keywords (e.g., `q-development`, `q-sales`)
  - **Location:** Filter jobs by region and city (e.g., `west-vlaanderen/koekelare`)
  - **Specialism:** Filter by job specialism/industry (e.g., `s-engineering`, `s-sales`)
  - **Sub-Specialism:** Filter by sub-category within a specialism (e.g., `ss-data-analytics`)
  - **Job Category:** Filter by job category/role (e.g., `r-engineer`, `r-administrator`)
  - **Job Type:** Filter by employment type (e.g., `permanent`, `contract`, `temporary`)
  - **Language:** Filter by language (e.g., `l-english`, `l-french`, `l-dutch`)
- **Rich Data Extraction:** Extracts comprehensive job information including:
  - Job details from JSON-LD structured data
  - Additional sections (skills, qualifications, education, experience)
  - Data layer information (industry, subcategory, branch, annual salary)
  - Metadata (launch date, application type, internal flag)
- **Direct Job Detail URLs:** Can scrape individual job posting pages directly

### How to Use

1. **Set Up:** Ensure you have an Apify account and access to the Apify platform.
2. **Get Search URLs:** Go to [Randstad Global](https://www.randstad.com/jobs/) and apply your desired filters (country, keyword, location, specialism, etc.). Copy the resulting URL(s).
3. **Configure Input:** Add your Randstad.com search URLs to the `startUrls` array in the actor input.
4. **Configure Proxy Settings:** (Optional) For enhanced reliability, configure proxy settings.
5. **Run the Scraper:** Execute the scraper and obtain the extracted data in your preferred format, such as JSON, CSV, Excel, or others as supported by Apify.

### Input Data

Here's an example of how to set up a job search:

```json
{
    "startUrls": [
        "https://www.randstad.com/jobs/united-kingdom/q-development/s-engineering/r-engineer/merseyside/permanent/l-english/",
        "https://www.randstad.com/jobs/canada/q-sales/permanent/l-french/",
        "https://www.randstad.com/jobs/q-sales/s-sales/r-administrator/permanent/",
        "https://www.randstad.com/jobs/belgium/q-assistent/s-science-research/west-vlaanderen/koekelare/l-dutch/",
        "https://www.randstad.com/jobs/representant-des-ventes-%7C-manutention_trois-rivieres_45351479/"
    ],
    "maxItems": 100,
    "maxConcurrency": 50,
    "minConcurrency": 1,
    "maxRequestRetries": 100,
    "proxy": {
        "useApifyProxy": true,
        "apifyProxyGroups": ["RESIDENTIAL"]
    }
}
````

### Input Options

#### Required Parameters

- **Start URLs** (`startUrls`): Array of Randstad.com URLs to scrape. Can include:
  - Search result pages with filters: `https://www.randstad.com/jobs/united-kingdom/q-development/s-engineering/r-engineer/merseyside/permanent/l-english/`
  - Direct job detail pages: `https://www.randstad.com/jobs/representant-des-ventes-%7C-manutention_trois-rivieres_45351479/`

#### URL Filter Parameters

When creating search URLs on Randstad.com, you can use the following filter parameters in the URL path:

- **Country**: Country name (e.g., 'belgium', 'canada', 'united-kingdom', 'france', 'germany')
- **Keyword** (`q-{keyword}`): Search keyword (e.g., 'q-development', 'q-sales', 'q-assistent')
- **Specialism** (`s-{specialism}`): Job specialism/industry (e.g., 's-engineering', 's-sales', 's-science-research')
- **Sub-Specialism** (`ss-{subSpecialism}`): Sub-category within a specialism (e.g., 'ss-data-analytics')
- **Job Category** (`r-{category}`): Job category/role (e.g., 'r-engineer', 'r-administrator')
- **Region**: Region/state name (e.g., 'merseyside', 'west-vlaanderen')
- **City**: City name (e.g., 'koekelare', 'liverpool')
- **Job Types**: Employment types (e.g., 'permanent', 'contract', 'temporary', 'freelance')
- **Language** (`l-{language}`): Language filter (e.g., 'l-english', 'l-french', 'l-dutch')
- **Remote**: Remote work filter (use 'remote' keyword in URL)

**Example URL formats:**

- With country and location: `/jobs/belgium/q-assistent/s-science-research/west-vlaanderen/koekelare/l-dutch/`
- With multiple filters: `/jobs/united-kingdom/q-development/s-engineering/r-engineer/merseyside/permanent/l-english/`
- Simple search: `/jobs/q-sales/s-sales/r-administrator/permanent/`
- With country only: `/jobs/canada/q-sales/permanent/l-french/`

#### Scraper Configuration

- **Max Items** (`maxItems`): Maximum number of job listings that will be scraped. Default is `20`.
- **Max Concurrency** (`maxConcurrency`): Maximum number of pages that can be processed at the same time. Default is `50`.
- **Min Concurrency** (`minConcurrency`): Minimum number of pages that will be processed at the same time. Default is `1`.
- **Max Request Retries** (`maxRequestRetries`): Number of times the scraper will retry a failed request before giving up. Default is `100`.
- **Proxy Configuration** (`proxy`): Specifies proxy servers that will be used by the scraper to hide its origin, ensuring greater reliability and anonymity. For more details, see the [Proxy configuration](https://apify.com/apify/web-scraper#proxy-configuration).

### Output Structure

The output data typically includes:

```json
{
  "vacancyNumber": "45741448",
  "error": "No JSON-LD data found",
  "url": "https://www.randstad.com/jobs/representant-des-ventes-%7C-manutention_trois-rivieres_45351479/",
  "basicInfo": {
      "_index": "jobs_rscom_1740572699874",
      "_type": "_doc",
      "_id": "45741448",
      "_score": 21.90242,
      "_source": {
          "Salary": {
              "CompensationTypeId": "1",
              "Rate": null,
              "HideSalaryMinSpecified": "true",
              "SalaryMaxSpecified": "true",
              "Benefits": null,
              "SalaryMinSpecified": "true",
              "HideSalaryMin": "false",
              "CurrencyId": "3",
              "SalaryMin": "21.56",
              "CurrencyIdSpecified": "true",
              "CompensationTypeSpecified": "true",
              "HideSalaryMax": "false",
              "CompensationType": "per hour",
              "BenefitsList": null,
              "SalaryMax": "21.56",
              "HideSalaryMaxSpecified": "true"
          },
          "JobInformation": {
              "Description": "Ben jij de persoon die kwaliteit, planning en people management moeiteloos combineert?Voor een groeiend voedingsbedrijf in de regio Koekelare zijn we op zoek naar een gedreven en veelzijdige PQ Assistent. Als onmisbare schakel tussen verschillende afdelingen speel je een cruciale rol in het waarborgen van de productkwaliteit en het soepel laten verlopen van de productieprocessen. Dit is een uitgelezen kans om je te bewijzen en een vaste plek te veroveren b",
              "JobType": "Temp to Perm",
              "Hours": "Full-Time",
              "Education": null,
              "Title": "Kwaliteitscontroleur - Vaste late",
              "Duration": null,
              "JobInternal": "false"
          },
          "JobLocation": {
              "Region": "West-Vlaanderen",
              "City": "Koekelare",
              "Postcode": "8680"
          },
          "JobIdentity": {
              "CompanyName": "Randstad Belgium TF RSCOM"
          },
          "BlueXSanitized": {
              "JobType": "temp-to-perm",
              "SubSpecialism": null,
              "Title": "kwaliteitscontroleur-vaste-late",
              "City": "koekelare",
              "CompensationType": "per-hour",
              "Specialism": "science-research"
          },
          "BlueXJobData": {
              "CompanyName": "Randstad Belgium TF RSCOM",
              "Description": "Ben jij de persoon die kwaliteit, planning en people management moeiteloos combineert?Voor een groeiend voedingsbedrijf in de regio Koekelare zijn we op zoek naar een gedreven en veelzijdige PQ Assistent. Als onmisbare schakel tussen verschillende afdelingen speel je een cruciale rol in het waarborgen van de productkwaliteit en het soepel laten verlopen van de productieprocessen. Dit is een uitgelezen kans om je te bewijzen en een vaste plek te veroveren b",
              "JobType": "Temp to Perm",
              "SubSpecialism": null,
              "ReferenceNumber": "6e1984a2-26ce-4e8e-9b6e-a5331f833090",
              "Title": "Kwaliteitscontroleur - Vaste late",
              "Region": "West-Vlaanderen",
              "City": "Koekelare",
              "CompensationType": "per hour",
              "Specialism": "Science & Research",
              "JobId": "45741448"
          },
          "ClientInformation": {
              "ClientName": "DEKEYZER-OSSAER",
              "ClientId": "C-BE-014dddfb-42fe-4111-bd37-a7906d858a10",
              "ClientLogoUrl": null
          },
          "JobDates": {
              "DateCreated": "2025-08-28",
              "DateCreatedTime": "2025-08-28 10:22:35"
          },
          "JobId": "6e1984a2-26ce-4e8e-9b6e-a5331f833090",
          "Contact": {
              "Office": null,
              "Code": null
          }
      },
      "sort": [
          0,
          21.90242
      ]
  }
}
```

### Output Fields Explanation

#### Main Job Information

- `vacancyNumber`: Unique vacancy reference number/ID for the job posting (e.g., "45741448").
- `error`: Error message if JSON-LD data extraction failed (e.g., "No JSON-LD data found").
- `url`: Direct URL to the job posting on Randstad.com (e.g., "https://www.randstad.com/jobs/representant-des-ventes-%7C-manutention\_trois-rivieres\_45351479/").
- `title`: Job title/position name (extracted from basicInfo when available).
- `datePosted`: ISO 8601 formatted date when the job was posted (when JSON-LD data is available).
- `educationRequirements`: Required education level (when JSON-LD data is available).
- `experienceRequirements`: Required work experience (when JSON-LD data is available).
- `workHours`: Working hours type (e.g., "Full-Time", "Part-Time").
- `skills`: Required skills for the position.
- `industry`: Industry/sector category (e.g., "Science & Research", "Engineering", "Sales").
- `description`: Full description of the job vacancy including responsibilities, requirements, and benefits.

#### Salary Information

- `salary`: Object containing salary details (when JSON-LD data is available):
  - `minValue`: Minimum salary amount.
  - `maxValue`: Maximum salary amount.
  - `unitText`: Time unit for salary (e.g., "HOUR", "DAY", "YEAR").
  - `currency`: Currency code (e.g., "EUR", "USD", "GBP").

#### Employment Details

- `employmentType`: Employment type (e.g., "FULL\_TIME", "CONTRACTOR", "TEMPORARY").

#### Hiring Organization

- `hiringOrganization`: Object containing recruiter/agency information (when JSON-LD data is available):
  - `name`: Name of the hiring organization (e.g., "Randstad Belgium", "Randstad UK").
  - `logo`: Logo URL of Randstad.
  - `website`: Website URL of the hiring organization.

#### Job Location

- `jobLocation`: Object with work location details (when JSON-LD data is available):
  - `streetAddress`: Street address of the job location.
  - `postalCode`: Postal code of the work location.
  - `addressLocality`: City/locality name (e.g., "Koekelare", "Liverpool", "Toronto").
  - `addressRegion`: Region/state name (e.g., "West-Vlaanderen", "Merseyside", "Ontario").
  - `addressCountry`: Country code (e.g., "BE" for Belgium, "GB" for United Kingdom, "CA" for Canada).

#### Structured Sections

- `sections`: Object containing parsed job description sections:
  - `experience`: Experience requirements extracted from description.
  - `skills`: Skills requirements extracted from description.
  - `qualifications`: Qualifications requirements extracted from description.
  - `education`: Education requirements extracted from description.

#### Data Layer Information

- `dataLayer`: Object containing analytics and categorization data (when JSON-LD data is available):
  - `applicationType`: Application type (e.g., "direct application").
  - `industry`: Industry category (e.g., "Science & Research", "Engineering", "Sales").
  - `subcategory`: Job subcategory.
  - `operatingCompany`: Operating company name (e.g., "Randstad Belgium", "Randstad UK").
  - `branchName`: Branch/office code.
  - `internal`: Boolean indicating if it's an internal posting.
  - `standardizedJobCode`: Standardized job code (if available).
  - `standardizedJobTitle`: Standardized job title (if available).
  - `launchDate`: Date when the job was launched (format: YYYY-MM-DD).
  - `annualSalary`: Object with calculated annual salary:
    - `minimum`: Minimum annual salary.
    - `maximum`: Maximum annual salary.

#### Metadata

- `metadata`: Object containing SEO and social sharing metadata:
  - `metaDescription`: SEO meta description (truncated preview of job description).
  - `ogTitle`: Open Graph title for social media sharing.
  - `ogDescription`: Open Graph description for social media sharing.
  - `canonicalUrl`: Canonical URL of the job posting.

#### Basic Information (Raw API Data)

- `basicInfo`: Object containing raw data from Randstad's Elasticsearch API:
  - `_index`: Elasticsearch index name (e.g., "jobs\_rscom\_1740572699874" for Randstad.com).
  - `_type`: Document type ("\_doc").
  - `_id`: Job ID in the system (e.g., "45741448").
  - `_score`: Relevance score from search.
  - `_source`: Complete source data from API including:
    - `Salary`: Detailed salary information with compensation type, currency (CurrencyId: 3 for EUR, 4 for AUD, etc.), min/max values, and visibility flags.
    - `JobInformation`: Job details including description, job type (e.g., "Temp to Perm", "Contract", "Permanent"), hours, education, title, duration.
    - `JobLocation`: Location details with region (e.g., "West-Vlaanderen"), city (e.g., "Koekelare"), and postcode.
    - `JobIdentity`: Company name (e.g., "Randstad Belgium TF RSCOM").
    - `BlueXSanitized`: Sanitized/normalized data for URLs and categorization (specialism, job type, city slugs).
    - `BlueXJobData`: Complete job data including reference number, specialism (e.g., "Science & Research"), and all job details.
    - `ClientInformation`: Client company details including ClientName, ClientId, and ClientLogoUrl (when available).
    - `JobDates`: Creation date and time (format: YYYY-MM-DD and YYYY-MM-DD HH:MM:SS).
    - `JobId`: Unique job identifier (UUID format).
    - `Contact`: Office and contact code information.
  - `sort`: Array with sort values (relevance score and other sorting criteria).

### Explore More Scrapers

If you found this Randstad.com Job Scraper useful, be sure to check out our other powerful scrapers and actors at [memo23's Apify profile](https://apify.com/memo23). We offer a wide range of tools to enhance your web scraping and automation needs across various platforms and use cases.

### Support

- For issues or feature requests, please use the [Issues](https://console.apify.com/actors/kv9OK8LCX5VPbPlLu/issues) section of this actor.
- If you need customization or have questions, feel free to contact the author:
  - Author's website: <https://muhamed-didovic.github.io/>
  - Email: <muhamed.didovic@gmail.com>

### Additional Services

- Request customization or whole dataset: <muhamed.didovic@gmail.com>
- If you need anything else scraped, or this actor customized, email: <muhamed.didovic@gmail.com>
- For API services of this scraper (no Apify fee, just usage fee for the API), contact: <muhamed.didovic@gmail.com>
- Email: muhamed.didovic@gmail.com

# Actor input Schema

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

URLs to start with.

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

Maximum number of listings/items that will be scraped.

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

Maximum number of pages that can be processed at the same time.

## `minConcurrency` (type: `integer`):

Minimum number of pages that will be processed at the same time.

## `maxRequestRetries` (type: `integer`):

Number of times the crawler will retry a failed request before giving up.

## `enrichEmails` (type: `boolean`):

If enabled, tries to find a contact email for each hiring company by discovering its website (Clearbit) and reading its contact/about pages. Adds contactEmail + contactWebsite columns plus a detailed emailEnrichment object. Best-effort, billed per contact email found; only charged when an email is returned, never for misses.

## `proxy` (type: `object`):

Specifies proxy servers that will be used by the scraper in order to hide its origin.<br><br>For details, see <a href='https://apify.com/apify/web-scraper#proxy-configuration' target='_blank' rel='noopener'>Proxy configuration</a> in README.

## Actor input object example

```json
{
  "startUrls": [
    "https://www.randstad.com/jobs/belgium/q-assistent/s-science-research/west-vlaanderen/koekelare/l-dutch/"
  ],
  "maxItems": 20,
  "maxConcurrency": 50,
  "minConcurrency": 1,
  "maxRequestRetries": 100,
  "enrichEmails": false,
  "proxy": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  }
}
```

# 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 = {
    "startUrls": [
        "https://www.randstad.com/jobs/belgium/q-assistent/s-science-research/west-vlaanderen/koekelare/l-dutch/"
    ],
    "proxy": {
        "useApifyProxy": true,
        "apifyProxyGroups": [
            "RESIDENTIAL"
        ]
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("memo23/randstad-com-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 = {
    "startUrls": ["https://www.randstad.com/jobs/belgium/q-assistent/s-science-research/west-vlaanderen/koekelare/l-dutch/"],
    "proxy": {
        "useApifyProxy": True,
        "apifyProxyGroups": ["RESIDENTIAL"],
    },
}

# Run the Actor and wait for it to finish
run = client.actor("memo23/randstad-com-scraper").call(run_input=run_input)

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

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

```

## CLI example

```bash
echo '{
  "startUrls": [
    "https://www.randstad.com/jobs/belgium/q-assistent/s-science-research/west-vlaanderen/koekelare/l-dutch/"
  ],
  "proxy": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  }
}' |
apify call memo23/randstad-com-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=memo23/randstad-com-scraper",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Randstad.com Jobs [Only $1] Scraper",
        "description": "Scrape Randstad.com jobs worldwide: extract job titles, descriptions, salaries, locations (country/region/city), company names, employment types, specialisms, job categories, posting dates, and client information from any country's Randstad site.",
        "version": "0.0",
        "x-build-id": "tgBREHWSJAWbtSWul"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/memo23~randstad-com-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-memo23-randstad-com-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/acts/memo23~randstad-com-scraper/runs": {
            "post": {
                "operationId": "runs-sync-memo23-randstad-com-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor and returns information about the initiated run in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/runsResponseSchema"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/acts/memo23~randstad-com-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-memo23-randstad-com-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "properties": {
                    "startUrls": {
                        "title": "Start URLs",
                        "type": "array",
                        "description": "URLs to start with.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "maxItems": {
                        "title": "Max number of listings/items per crawl/scrape",
                        "type": "integer",
                        "description": "Maximum number of listings/items that will be scraped.",
                        "default": 20
                    },
                    "maxConcurrency": {
                        "title": "Max Concurrency",
                        "type": "integer",
                        "description": "Maximum number of pages that can be processed at the same time.",
                        "default": 50
                    },
                    "minConcurrency": {
                        "title": "Min Concurrency",
                        "type": "integer",
                        "description": "Minimum number of pages that will be processed at the same time.",
                        "default": 1
                    },
                    "maxRequestRetries": {
                        "title": "Max Request Retries",
                        "type": "integer",
                        "description": "Number of times the crawler will retry a failed request before giving up.",
                        "default": 100
                    },
                    "enrichEmails": {
                        "title": "Enrich with employer contact emails (experimental, billed per email)",
                        "type": "boolean",
                        "description": "If enabled, tries to find a contact email for each hiring company by discovering its website (Clearbit) and reading its contact/about pages. Adds contactEmail + contactWebsite columns plus a detailed emailEnrichment object. Best-effort, billed per contact email found; only charged when an email is returned, never for misses.",
                        "default": false
                    },
                    "proxy": {
                        "title": "Proxy configuration",
                        "type": "object",
                        "description": "Specifies proxy servers that will be used by the scraper in order to hide its origin.<br><br>For details, see <a href='https://apify.com/apify/web-scraper#proxy-configuration' target='_blank' rel='noopener'>Proxy configuration</a> in README.",
                        "default": {
                            "useApifyProxy": true,
                            "apifyProxyGroups": [
                                "RESIDENTIAL"
                            ]
                        }
                    }
                }
            },
            "runsResponseSchema": {
                "type": "object",
                "properties": {
                    "data": {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": "string"
                            },
                            "actId": {
                                "type": "string"
                            },
                            "userId": {
                                "type": "string"
                            },
                            "startedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "finishedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "status": {
                                "type": "string",
                                "example": "READY"
                            },
                            "meta": {
                                "type": "object",
                                "properties": {
                                    "origin": {
                                        "type": "string",
                                        "example": "API"
                                    },
                                    "userAgent": {
                                        "type": "string"
                                    }
                                }
                            },
                            "stats": {
                                "type": "object",
                                "properties": {
                                    "inputBodyLen": {
                                        "type": "integer",
                                        "example": 2000
                                    },
                                    "rebootCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "restartCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "resurrectCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "computeUnits": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "options": {
                                "type": "object",
                                "properties": {
                                    "build": {
                                        "type": "string",
                                        "example": "latest"
                                    },
                                    "timeoutSecs": {
                                        "type": "integer",
                                        "example": 300
                                    },
                                    "memoryMbytes": {
                                        "type": "integer",
                                        "example": 1024
                                    },
                                    "diskMbytes": {
                                        "type": "integer",
                                        "example": 2048
                                    }
                                }
                            },
                            "buildId": {
                                "type": "string"
                            },
                            "defaultKeyValueStoreId": {
                                "type": "string"
                            },
                            "defaultDatasetId": {
                                "type": "string"
                            },
                            "defaultRequestQueueId": {
                                "type": "string"
                            },
                            "buildNumber": {
                                "type": "string",
                                "example": "1.0.0"
                            },
                            "containerUrl": {
                                "type": "string"
                            },
                            "usage": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "integer",
                                        "example": 1
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "usageTotalUsd": {
                                "type": "number",
                                "example": 0.00005
                            },
                            "usageUsd": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "number",
                                        "example": 0.00005
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
