# Freelancermap Projects Scraper – IT Contracts & Leads (`haketa/freelancermap-projects-scraper`) Actor

Scrape IT freelance and contract projects from Freelancermap: title, description, skills, industry, contract type, remote %, rate, duration, start date, location plus the posting company and contact. Search by keyword or export every current project.

- **URL**: https://apify.com/haketa/freelancermap-projects-scraper.md
- **Developed by:** [Haketa](https://apify.com/haketa) (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 $5.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/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.

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

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

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python/docs.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/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

<h1 align="center">Freelancermap Projects Scraper 🧑‍💻</h1>

<p align="center">
  <img alt="Platform" src="https://img.shields.io/badge/Made%20for-Apify-97D700?style=for-the-badge">
  <img alt="Niche" src="https://img.shields.io/badge/IT-Freelance%20Projects-4C8BF5?style=for-the-badge">
  <img alt="No code" src="https://img.shields.io/badge/No%20code-required-8A2BE2?style=for-the-badge">
  <img alt="Modes" src="https://img.shields.io/badge/Modes-Search%20%7C%20Scrape%20all-FF7A00?style=for-the-badge">
  <img alt="Export" src="https://img.shields.io/badge/Export-Excel%20%7C%20CSV%20%7C%20JSON%20%7C%20API-00B3A4?style=for-the-badge">
</p>

<p align="center"><b>Turn Freelancermap's IT project board into a clean, structured, export-ready dataset.</b></p>

Scrape **IT freelance & contract projects** from **Freelancermap** — by keyword/skill, or export **every current project** in one run. Each record includes the **project details, required skills, contract type, remote share, duration and start date**, plus the **posting company and contact** — the data that freelancers, recruiters and market researchers actually need.

Export to **JSON, CSV or Excel** in minutes — no code required.

---

### ⚡ At a glance

| | |
|---|---|
| 🎯 **Search mode** | Newest projects for any keyword or skill (`SAP`, `Python`, `DevOps`…) |
| 🗺️ **Scrape-all mode** | Every project currently listed — thousands of records |
| 🧩 **Skills & tech** | Full required-skills list per project |
| 🏢 **Client & contact** | Posting company, contact name, direct-client flag |
| 🌍 **Remote & location** | Remote %, country, city |
| 🕐 **Terms** | Contract type, duration, start date, workload |
| 💾 **Export** | Excel, CSV, JSON, HTML, RSS or API |
| 🧑‍💻 **No code** | Type a skill, click Start, download results |

---

### 📌 Why this Actor?

Freelancermap is one of Europe's biggest boards for **IT freelance and contract projects** (DACH & international). This Actor gives you the whole board as structured data:

- 🧩 **Every required skill** for each project — perfect for matching and demand analysis.
- 🏢 **Who posted it** — company name, company profile link, contact person, and a **direct-client vs. agency** flag so you can tell end customers from recruiters.
- 🌍 **Remote share & location** — filter for fully remote, hybrid or on-site.
- 🕐 **Contract terms** — contract type, duration, start date and workload.
- 📝 **Full description** in clean plain text.
- 🗺️ **Complete coverage** — a *Scrape all projects* mode that exports every project on the board, not just a keyword slice.

---

### ✨ What you get (data fields)

> **Coverage key:**  🟢 almost every project · 🟡 when the project publishes it · ⚪ occasional / niche

#### 📋 Project details

| Field | Description | Coverage |
|-------|-------------|:--------:|
| `title` | Project title | 🟢 |
| `description` | Full description (plain text) | 🟢 |
| `skills` | Required skills / technologies | 🟢 |
| `industry` | Project industry | 🟢 |
| `contractType` | Freelance, Permanent or Agency contract | 🟢 |
| `remoteInPercent` | Share of remote work (0–100) | 🟢 |
| `durationText` / `durationMonths` | Project duration | 🟡 |
| `startDate` | Start (date or `asap`) | 🟢 |
| `workload` | Weekly workload in hours | 🟡 |
| `budget` | Rate / budget, when published | ⚪ |

#### 🏢 Client &amp; contact (lead data)

| Field | Description | Coverage |
|-------|-------------|:--------:|
| `company` | Company that posted the project | 🟢 |
| `companyUrl` | Company profile page on Freelancermap | 🟡 |
| `isEndcustomerProject` | `true` = direct end client · `false` = agency/recruiter | 🟢 |
| `contactFirstName` / `contactLastName` | Posting contact person | 🟢 |
| `posterCompany` | Poster's company name | 🟡 |
| `posterCity` / `posterZip` / `posterCountry` | Poster location | 🟡 |
| `posterAccountType` / `posterMembership` | Account type &amp; membership tier | 🟡 |

#### 🌍 Location &amp; meta

| Field | Description | Coverage |
|-------|-------------|:--------:|
| `country` | Project country | 🟢 |
| `city` | Project city (or "Remote") | 🟢 |
| `locations` | Named work locations | 🟡 |
| `url` | Direct link to the project | 🟢 |
| `projectId` | Freelancermap project ID | 🟢 |
| `createdAt` | When the project was posted | 🟢 |
| `expiresAt` | When the listing expires | 🟢 |
| `scrapedAt` | Collection timestamp | 🟢 |

> Some fields (rate, exact duration, workload) are only filled when the poster provides them. Poster location & membership are richest in **Search mode**.

---

### 🚀 Quick start

1. Click **Try for free / Start**.
2. In **Search terms**, add the skills or keywords you want — one per line:
````

SAP
Python
DevOps

````
3. *(Optional)* Turn on **Scrape ALL current projects** to export the whole board instead of keyword matches.
4. *(Optional)* Set **Max projects** to cap the run.
5. Click **Save &amp; Start**, then export from the **Dataset** tab.

> 💡 **Tip:** Leave everything blank and hit Start to get an instant **sample of projects** so you can see the output format first.

---

### 🎛️ Two ways to scrape

| Mode | How | Best for |
|------|-----|----------|
| 🎯 **Keyword search** | Add **Search terms** (e.g. `SAP`, `AWS`, `project manager`) | Fresh, targeted projects for a skill or role |
| 🗺️ **Scrape all projects** | Turn on **Scrape ALL current projects** | Market research, rate benchmarking, a full project database |

You can also paste specific project or search URLs into **Start URLs**.

---

### 🎯 Use cases

| Use case | What it delivers |
|----------|------------------|
| 🧑‍💻 **Freelancers & consultants** | A live feed of new IT projects matching your skills — filter by remote %, contract type and start date. |
| 🧲 **Recruiters &amp; staffing agencies** | Find companies posting contract roles (sales leads), spot **direct end-client** projects vs. competitor agencies, and see contacts. |
| 📊 **Market research &amp; rate benchmarking** | Export the whole board to analyse in-demand skills, remote trends, contract types and industries across the market. |
| 🔄 **CRM &amp; ATS enrichment** | Feed structured project + company + contact data straight into your pipeline. |
| ⏰ **Project alerts** | Re-run on a schedule to catch brand-new projects the moment they appear. |

---

### ⚙️ Input reference

| Input | Type | Default | Description |
|-------|------|---------|-------------|
| **Search terms / skills** | list | *sample* | One keyword/skill per line. Each returns the newest matching projects. |
| **Scrape ALL current projects** | boolean | `false` | Export every project on the board (thousands). Great for market research. |
| **Start URLs** | list | — | Optional. Paste project pages (`…/project/…`) or search URLs. |
| **Include full project details** | boolean | `true` | Adds skills, industry, rate, workload, duration, start, remote % and company link. |
| **Max projects** | number | `0` | Cap the number of projects. `0` = no limit. |
| **Proxy configuration** | object | Datacenter | Proxy settings. The default is more than enough. |
| **Max concurrent requests** | number | `8` | Pages fetched in parallel (5–10 recommended). |

#### 📥 Example input

```json
{
"searchTerms": ["SAP", "Python", "DevOps"],
"scrapeProjectDetails": true,
"maxItems": 200,
"maxConcurrency": 8
}
````

<details>
<summary><b>🗺️ Export every current project (market research)</b></summary>

```json
{
  "scrapeAllProjects": true,
  "scrapeProjectDetails": true,
  "maxItems": 0
}
```

</details>

<details>
<summary><b>🔗 Scrape specific projects or a search you built</b></summary>

```json
{
  "startUrls": [
    "https://www.freelancermap.com/project/sap-sd-consultant-order-to-cash-uk-hybrid-3-days-onsite",
    "https://www.freelancermap.com/projects?query=aws&sort=1&locale=en"
  ]
}
```

</details>

***

### 📤 Example output

```json
{
  "projectId": 3026973,
  "title": "SAP ABAP + S/4HANA Senior Architect",
  "url": "https://www.freelancermap.com/project/sap-abap-s4hana-senior-architect-3026973",
  "contractType": "Freelance",
  "remoteInPercent": 100,
  "skills": ["SAP ABAP", "SAP S/4HANA", "SAP Fiori", "OData"],
  "industry": "IT",
  "company": "CosMicIT GmbH",
  "companyUrl": "https://www.freelancermap.com/company/…",
  "isEndcustomerProject": false,
  "contactFirstName": "Mritunjay",
  "contactLastName": "Jha",
  "posterCompany": "CosMicIT",
  "posterCity": "Unterhaching",
  "posterZip": "82008",
  "posterCountry": "Germany",
  "posterMembership": 4,
  "country": "United Kingdom",
  "city": "Remote",
  "durationMonths": 6,
  "durationText": "6 months",
  "workload": 40,
  "startDate": "asap",
  "description": "We are hiring a SAP ABAP + S/4HANA Senior Architect …",
  "createdAt": "2026-07-23T06:31:14+02:00",
  "expiresAt": "2026-07-31T00:00:00+02:00",
  "scrapedAt": "2026-07-24T11:06:45.115Z"
}
```

***

### 💡 Tips & best practices

- ✅ **Add several skills at once.** Each term is scraped and merged into one deduplicated dataset.
- ✅ **Use Scrape-all for coverage.** Keyword search returns the newest matches; *Scrape all projects* returns the whole board.
- ✅ **Filter in your output.** Sort or filter by `remoteInPercent`, `contractType`, `isEndcustomerProject` or `country` after export.
- ✅ **Find direct clients.** Filter `isEndcustomerProject = true` to skip agencies and reach end customers.
- ✅ **Schedule it.** Run on a schedule to catch new projects as they are posted.
- ✅ **Export anywhere.** CSV/Excel, Google Sheets, Make, Zapier or the Apify API.

***

### ❓ FAQ

**What exactly does it scrape?**
IT freelance and contract projects listed on Freelancermap — details, skills, contract terms, location and the posting company/contact.

**Do I need an account or to code?**
No. Enter search terms (or turn on Scrape-all), click Start, and export.

**How many projects can I get?**
In *Scrape all* mode, the whole board (thousands). In keyword mode, the newest matching projects per term. Use **Max projects** to cap the run.

**Can I get the rate?**
When a project publishes a structured rate it appears in `budget`; otherwise the rate is often written inside the `description`.

**Can I tell agencies from direct clients?**
Yes — `isEndcustomerProject` is `true` for direct end customers and `false` for agencies/recruiters.

**In what format is the data?**
Structured JSON by default, exportable to CSV, Excel, HTML, RSS or via API.

**How fresh is the data?**
Every run fetches live data, so results reflect the projects listed at run time.

***

### 📊 Output & integrations

Results are stored in a standard Apify dataset. You can:

- 👀 Preview them in a clean **table view** in the Console.
- 💾 Export to **JSON, CSV, Excel, HTML, or RSS**.
- 🔌 Pull them via the **Apify API**.
- 🔗 Push them to **Google Sheets, Make, Zapier, Airbyte** and more.

***

### ⚖️ Legal & responsible use

This Actor collects **publicly available project information** for legitimate purposes such as job search, recruitment and market research.

- Use the data in compliance with **GDPR**, the **ePrivacy Directive** and any other applicable laws, including rules on **B2B outreach and electronic communications**.
- Contact data still requires a lawful basis for processing and outreach — ensure you have one and honour opt-out requests.
- Respect the source website's terms of service and use the data responsibly.
- This Actor is intended for lawful **business** use cases only. You are responsible for how you use the collected data.

If you are unsure about a specific use case, consult your legal counsel before large-scale collection or outreach.

***

### 🛟 Support

Found a bug, need an extra field, or want a tweak? **Open an issue** on the Actor's Issues tab — feedback is welcome and helps improve the Actor.

<p align="center"><b>Happy sourcing! 🧑‍💻</b></p>

# Actor input Schema

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

One keyword or skill per line — for example 'SAP', 'Python', 'DevOps', 'project manager'. Each term returns the newest matching projects. Leave blank (and turn on 'Scrape all projects' or leave everything empty) to get a sample.

## `scrapeAllProjects` (type: `boolean`):

When on, exports every project currently listed on Freelancermap (thousands of records) instead of only keyword matches. Ideal for market research, rate benchmarking and building a complete project database. Combine with 'Max projects' to cap the run.

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

Optional. Paste Freelancermap project pages (…/project/…) or search-result URLs to scrape them directly.

## `scrapeProjectDetails` (type: `boolean`):

When on, each project's page is opened to add skills, industry, rate/budget, workload, duration, start date, contract type, remote share and the posting company link. Turn off for a faster, lighter list from search results only.

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

Maximum number of projects to collect in this run. Set to 0 for no limit (collect everything your search or 'Scrape all projects' returns).

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

Proxy settings for reliable data collection. Datacenter proxies (the default) are more than enough for this Actor.

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

How many pages to fetch in parallel. Higher values finish large runs faster. Recommended: 5–10.

## Actor input object example

```json
{
  "searchTerms": [
    "java",
    "aws",
    "salesforce"
  ],
  "scrapeAllProjects": false,
  "startUrls": [],
  "scrapeProjectDetails": true,
  "maxItems": 100,
  "proxyConfiguration": {
    "useApifyProxy": true
  },
  "maxConcurrency": 8
}
```

# Actor output Schema

## `datasetItems` (type: `string`):

Download every project collected in this run (JSON, CSV, Excel).

## `runUrl` (type: `string`):

Open this run in the Apify Console.

## `title` (type: `string`):

Project title

## `company` (type: `string`):

Company that posted the project

## `skills` (type: `string`):

Required skills / technologies

## `industry` (type: `string`):

Project industry

## `contractType` (type: `string`):

Freelance, Permanent or Agency contract

## `remoteInPercent` (type: `string`):

Share of remote work (0–100)

## `budget` (type: `string`):

Hourly/daily rate or budget, when published

## `workload` (type: `string`):

Weekly workload in hours, when published

## `durationText` (type: `string`):

Project duration

## `startDate` (type: `string`):

Project start (date or 'asap')

## `country` (type: `string`):

Project country

## `city` (type: `string`):

Project city

## `isEndcustomerProject` (type: `string`):

True = direct end client, false = agency/recruiter

## `companyUrl` (type: `string`):

Company profile page on Freelancermap

## `contactFirstName` (type: `string`):

Posting contact first name

## `contactLastName` (type: `string`):

Posting contact last name

## `posterCity` (type: `string`):

City of the poster/agency

## `description` (type: `string`):

Full project description

## `createdAt` (type: `string`):

When the project was posted

## `url` (type: `string`):

Direct link to the project

## `projectId` (type: `string`):

Freelancermap project ID

## `scrapedAt` (type: `string`):

ISO 8601 timestamp

# 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": [
        "SAP",
        "Python"
    ],
    "startUrls": [],
    "maxItems": 100,
    "proxyConfiguration": {
        "useApifyProxy": true
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("haketa/freelancermap-projects-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": [
        "SAP",
        "Python",
    ],
    "startUrls": [],
    "maxItems": 100,
    "proxyConfiguration": { "useApifyProxy": True },
}

# Run the Actor and wait for it to finish
run = client.actor("haketa/freelancermap-projects-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 '{
  "searchTerms": [
    "SAP",
    "Python"
  ],
  "startUrls": [],
  "maxItems": 100,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}' |
apify call haketa/freelancermap-projects-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Freelancermap Projects Scraper – IT Contracts & Leads",
        "description": "Scrape IT freelance and contract projects from Freelancermap: title, description, skills, industry, contract type, remote %, rate, duration, start date, location plus the posting company and contact. Search by keyword or export every current project.",
        "version": "1.0",
        "x-build-id": "gaJYiPt1IzEV9qxub"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/haketa~freelancermap-projects-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-haketa-freelancermap-projects-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/haketa~freelancermap-projects-scraper/runs": {
            "post": {
                "operationId": "runs-sync-haketa-freelancermap-projects-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/haketa~freelancermap-projects-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-haketa-freelancermap-projects-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": {
                    "searchTerms": {
                        "title": "Search terms / skills",
                        "type": "array",
                        "description": "One keyword or skill per line — for example 'SAP', 'Python', 'DevOps', 'project manager'. Each term returns the newest matching projects. Leave blank (and turn on 'Scrape all projects' or leave everything empty) to get a sample.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "scrapeAllProjects": {
                        "title": "Scrape ALL current projects",
                        "type": "boolean",
                        "description": "When on, exports every project currently listed on Freelancermap (thousands of records) instead of only keyword matches. Ideal for market research, rate benchmarking and building a complete project database. Combine with 'Max projects' to cap the run.",
                        "default": false
                    },
                    "startUrls": {
                        "title": "Start URLs (advanced)",
                        "type": "array",
                        "description": "Optional. Paste Freelancermap project pages (…/project/…) or search-result URLs to scrape them directly.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "scrapeProjectDetails": {
                        "title": "Include full project details",
                        "type": "boolean",
                        "description": "When on, each project's page is opened to add skills, industry, rate/budget, workload, duration, start date, contract type, remote share and the posting company link. Turn off for a faster, lighter list from search results only.",
                        "default": true
                    },
                    "maxItems": {
                        "title": "Max projects",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Maximum number of projects to collect in this run. Set to 0 for no limit (collect everything your search or 'Scrape all projects' returns).",
                        "default": 0
                    },
                    "proxyConfiguration": {
                        "title": "Proxy configuration",
                        "type": "object",
                        "description": "Proxy settings for reliable data collection. Datacenter proxies (the default) are more than enough for this Actor.",
                        "default": {
                            "useApifyProxy": true
                        }
                    },
                    "maxConcurrency": {
                        "title": "Max concurrent requests",
                        "minimum": 1,
                        "maximum": 15,
                        "type": "integer",
                        "description": "How many pages to fetch in parallel. Higher values finish large runs faster. Recommended: 5–10.",
                        "default": 8
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
