# Freelancermap Project Scraper (`alkausari_mujahid/freelancermap-project-scraper`) Actor

Turn freelancermap.de project searches into ready-to-use lead lists. Paste a search link and get every posting: title, company, contact person, location, remote share, start date, duration, skills, and full description. Ideal for freelancers finding gigs and agencies tracking demand.

- **URL**: https://apify.com/alkausari\_mujahid/freelancermap-project-scraper.md
- **Developed by:** [Alkausari M](https://apify.com/alkausari_mujahid) (community)
- **Categories:** Lead generation, Jobs, Integrations
- **Stats:** 2 total users, 2 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

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

**Scrape project postings from [freelancermap.de](https://www.freelancermap.de/projekte) — Germany's largest IT freelancer marketplace — without writing a line of code.** Run any project search on the site, paste the link here, and this freelancermap project scraper extracts every posting: title, company, contact person, location, remote share, start date, duration, skills, and the full description. Results land in a structured dataset ready for Excel, your CRM, or the Apify API.

> Built and maintained by **Alkausari M**. Looking for freelancer profiles instead? See the **Freelancermap Profile Scraper**.

***

### What does Freelancermap Project Scraper do?

- 🔎  **Search-URL driven** — paste any freelancermap project search URL
- 📇  **Complete posting data** — company, contact person, remote share, dates, skills, full description
- 🔓  **Newest projects without login** — the first results page needs no account; deeper pages use your free freelancermap login
- 🛡  **Anti-blocking ready** — real browser, fingerprints, proxy support, smart retries
- 📊  **Any format** — JSON, CSV, Excel, XML, or live via the Apify API
- 🖱  **Zero code** — no setup, no scripts, just click Start

***

### How do I scrape freelancermap projects?

1. **Paste search URLs** — any freelancermap.de project search page (URLs whose path starts with `/projekte`, e.g. `/projekte?query=...`, `/projekte/remote`, or category pages). You can also paste **direct project URLs** (`/projekt/...`) to scrape specific postings. Other page types are not supported.
2. **Set the page range** — `startPage` → `endPage` (28 projects per page; applies to search URLs only). Pages beyond 1 require your freelancermap account (see below).
3. **Click Start** — parsing and retries handled for you.

```jsonc
// Example input — newest projects, no login
{
    "startUrls": [
        "https://www.freelancermap.de/projekte?query=Python",
        "https://www.freelancermap.de/projekte/remote"
    ],
    "maxItems": 50
}
```

#### Scraping beyond the first page (login required)

freelancermap only shows search result pages beyond page 1 to logged-in users. To paginate deeper, provide your (free) freelancermap account:

```jsonc
{
    "startUrls": ["https://www.freelancermap.de/projekte?query=SAP"],
    "startPage": 1,
    "endPage": 10,
    "maxItems": 250,
    "email": "your@email.com",
    "password": "yourpassword"
}
```

> \[!NOTE]
> If login fails (e.g. wrong credentials), the Actor retries up to 3 times and then stops the run.

Both plain strings and `{ "url": "..." }` objects are accepted in `startUrls`.

***

### What data can you extract from freelancermap projects?

Each item is one project posting, extracted from the rendered project page. Fields the poster left blank come back as empty strings or arrays, so your columns stay consistent.

```json
{
    "url": "https://www.freelancermap.de/projekt/senior-cloud-engineer-m-w-d-1234567",
    "title": "Senior Cloud Engineer (m/w/d)",
    "company": "Beispiel GmbH",
    "companyRegisteredSince": "Registriert seit 20.04.2026",
    "contactPerson": "Max Mustermann",
    "city": "Berlin, Dresden",
    "country": "Deutschland",
    "locations": ["Berlin", "Dresden"],
    "remote": "60% Remote",
    "contractType": "Freiberuflich",
    "start": "ab sofort",
    "duration": "5 Monate+",
    "workload": "100% Auslastung",
    "industry": "IT",
    "isTopProject": true,
    "isEndcustomerProject": false,
    "skills": ["Kubernetes", "Terraform", "AWS", "CI/CD"],
    "created": "13.07.2026",
    "description": "Aufgaben:\nAufbau und Betrieb der Cloud-Infrastruktur...",
    "descriptionHtml": "<div>...</div>"
}
```

***

### Input settings

| Field | Type | Required | Default | Description |
|---|---|---|---|---|
| `startUrls` | Array | Yes | — | freelancermap project search URLs (`/projekte...`) and/or direct project URLs (`/projekt/...`). Plain strings or `{url}` objects. |
| `startPage` | Integer | No | `1` | First listing page to scrape |
| `endPage` | Integer | No | `1` | Last listing page to scrape (28 projects per page). Values above 1 require `email` + `password`. |
| `maxItems` | Integer | No | `10` | Cap on total projects scraped — raise it for bigger runs |
| `email` | String | If `endPage` > 1 | — | freelancermap account email |
| `password` | String | If `endPage` > 1 | — | freelancermap password (stored securely, never logged) |
| `pageDelay` | Integer | No | `2` | Seconds to pause on each project page (1–5) |
| `proxyConfiguration` | Object | No | none | Proxy settings; the Actor works without a proxy by default |

***

### How much does it cost to scrape freelancermap projects?

The Actor runs on the [Apify platform](https://apify.com) — see the **Pricing** tab on this page for the current rate, and check Apify's free tier to try it at no cost. Costs scale with the number of projects scraped, so use `maxItems` and the page range to control run size. A test run with the default `maxItems: 10` tells you the per-project cost before a big scrape.

***

### Who is Freelancermap Project Scraper for?

- **Freelancers** — monitor new projects matching your skills across searches, on a schedule, without refreshing the site.
- **Agencies & staffing providers** — capture project leads with the posting company and contact person for follow-up.
- **Market research** — track demand by skill, region, remote share, and industry over time.
- **Job boards & aggregators** — feed fresh German-market IT projects into your own platform via the Apify API.

***

### Tips for best results

- **Filter on the site first** — set up your search (keywords, remote %, category) on freelancermap.de, then paste the result URL. The Actor scrapes exactly what you filtered.
- **Schedule it** — the newest postings are on page 1, which needs no login. A daily scheduled run with `endPage: 1` catches new projects as they appear and can push them to Slack, email, or Google Sheets via integrations.
- **Raise `maxItems`** — the default caps a run at 10 projects for quick tests; increase it (e.g. to 500) for real runs.

***

### Is there a freelancermap API?

freelancermap.de doesn't offer a public API — this Actor works as an **unofficial freelancermap projects API**. Every run produces a structured dataset you can pull as JSON, CSV, Excel, or XML via the [Apify API](https://docs.apify.com/api/v2), on a schedule or on demand.

#### Integrations

Connect the results to **Google Sheets, Make, Zapier, Slack, Airbyte**, or any webhook using [Apify integrations](https://apify.com/integrations) — no code required.

***

### FAQ

#### Do I need a freelancermap account?

Only for pagination. The newest results (page 1 of each search, up to 28 projects) are scraped without any login. To go deeper than page 1, provide your freelancermap account credentials — a free account is enough.

#### Can I get the poster's email address or phone number?

No — freelancermap doesn't publish them on project pages; applications go through the platform's own contact flow. What you do get for outreach is the contact person's name, the company name, and how long the company has been registered on the platform.

#### Can I scrape a specific project?

Yes — paste the project's URL (e.g. `https://www.freelancermap.de/projekt/senior-cloud-engineer-m-w-d-1234567`) into `startUrls`, alone or mixed with search URLs. The `startPage`/`endPage` range only applies to search URLs.

#### How many projects can I scrape per run?

Each search results page holds up to 28 projects (including "Top" placements, which are deduplicated automatically). Choose the page range with `startPage`/`endPage` — with account credentials for pages beyond 1 — and cap the total with `maxItems`.

#### Is it legal to scrape freelancermap.de?

The Actor collects data that companies have published publicly to attract freelancers. You are responsible for using it in line with freelancermap's [Terms of Service](https://www.freelancermap.de/nutzungsbedingungen.html), GDPR, and applicable law.

***

### Support

Bugs, feature requests, or custom scraping work — open an issue on Apify or email **<alkausarimujahid@gmail.com>**.

***

<sub>Built by **Alkausari M**. This Actor is independent and not affiliated with, endorsed by, or sponsored by freelancermap GmbH. Use scraped data responsibly and in accordance with freelancermap's [Terms of Service](https://www.freelancermap.de/nutzungsbedingungen.html), GDPR, and applicable law.</sub>

# Actor input Schema

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

One or more freelancermap.de project search URLs (each paginated from Start Page to End Page) and/or direct project URLs (https://www.freelancermap.de/projekt/...) to scrape specific postings. Example: https://www.freelancermap.de/projekte

## `startPage` (type: `integer`):

First page of search results to scrape (1-based). Pages beyond 1 require account credentials (see below).

## `endPage` (type: `integer`):

Last page of search results to scrape. Each results page contains up to 28 projects. Pages beyond 1 require account credentials (see below).

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

Maximum total number of projects to scrape. Useful for quick tests and cost control.

## `email` (type: `string`):

Your freelancermap.de login email. Only required when End Page is greater than 1.

## `password` (type: `string`):

Your freelancermap.de login password. Only required when End Page is greater than 1. Stored securely and never logged.

## `pageDelay` (type: `integer`):

Delay in seconds to wait on each project page. Increase this if the scraper is being blocked or pages are not fully loading.

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

Proxy settings for the crawler. The Actor works without a proxy by default; enable Apify proxies if you see blocked requests on large runs.

## Actor input object example

```json
{
  "startUrls": [
    "https://www.freelancermap.de/projekte"
  ],
  "startPage": 1,
  "endPage": 1,
  "maxItems": 10,
  "pageDelay": 2,
  "proxyConfiguration": {
    "useApifyProxy": false,
    "apifyProxyGroups": []
  }
}
```

# 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.freelancermap.de/projekte"
    ],
    "maxItems": 10,
    "proxyConfiguration": {
        "useApifyProxy": false,
        "apifyProxyGroups": []
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("alkausari_mujahid/freelancermap-project-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.freelancermap.de/projekte"],
    "maxItems": 10,
    "proxyConfiguration": {
        "useApifyProxy": False,
        "apifyProxyGroups": [],
    },
}

# Run the Actor and wait for it to finish
run = client.actor("alkausari_mujahid/freelancermap-project-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.freelancermap.de/projekte"
  ],
  "maxItems": 10,
  "proxyConfiguration": {
    "useApifyProxy": false,
    "apifyProxyGroups": []
  }
}' |
apify call alkausari_mujahid/freelancermap-project-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/ZZ7hR3Em8EzueqqV3/builds/bIwCq5yggTwgIRMbw/openapi.json
