# Freelancer Project Listings Scraper (`scrapers_lat/freelancer-scraper`) Actor

Scrape public freelance project listings from Freelancer.com. Extract title, full description, fixed or hourly type, budget min and max with currency, bid count, average bid, required skills, posting date and the project URL.

- **URL**: https://apify.com/scrapers\_lat/freelancer-scraper.md
- **Developed by:** [Scrapers Lat](https://apify.com/scrapers_lat) (community)
- **Categories:** Jobs, Business, Automation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

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

<!-- actor-banner -->
[![Freelancer Project Listings Scraper](https://scrapers.lat/banners/freelancer-scraper.png)](https://console.apify.com/actors/rYhhLGm3yqyRUvrQ2/input)
<!-- /actor-banner -->

## Freelancer Scraper

> Extract live freelance project listings from Freelancer.com, the global marketplace with millions of posted jobs across every category and currency

![Apify](https://img.shields.io/badge/Platform-Apify-1CE1CE?logo=apify&logoColor=white)
![Coverage](https://img.shields.io/badge/Coverage-Global-blue)
![Maintained](https://img.shields.io/badge/Maintained-Yes-brightgreen)
![Output](https://img.shields.io/badge/Output-JSON%20%7C%20CSV%20%7C%20Excel-orange)

<table><tr>
<td align="center"><strong>20 fields</strong><br>per record</td>
<td align="center"><strong>Global</strong><br>coverage</td>
<td align="center"><strong>JSON / CSV / Excel</strong><br>output formats</td>
<td align="center"><strong>Updated</strong><br>2026-06-22</td>
</tr></table>

<br>

### What you get

One record per active project posted on Freelancer.com, with the full brief, the budget and the live bidding stats, ready to feed a lead pipeline, a market study or a rate benchmark. Every output field:

- **projectId**: the numeric Freelancer.com project id
- **title**: the project title as posted by the client
- **description**: the full project brief
- **type**: Fixed or Hourly
- **budgetMin**: lower bound of the client budget, in the project currency
- **budgetMax**: upper bound of the client budget, in the project currency
- **currency**: ISO currency code of the budget (for example USD, INR, EUR)
- **currencyName**: human readable currency name
- **bidCount**: how many freelancers have bid so far
- **avgBid**: average bid amount placed on the project
- **skills**: list of required skills and categories
- **hourlyHours**: weekly hour commitment, present on hourly projects only
- **hourlyInterval**: the commitment interval, present on hourly projects only
- **bidPeriodDays**: how many days the project stays open for bidding
- **sealed**: true when bids are hidden from other freelancers
- **featured**: true when the client paid to feature the project
- **urgent**: true when the client marked the project urgent
- **status**: the current project status (for example open)
- **language**: language code of the listing
- **postedAt**: ISO timestamp of when the project was submitted
- **url**: direct link to the project page
- **observedAt**: when this listing was last seen by the scraper

### Who is it for

| Use case | Who benefits |
|---|---|
| Lead generation from clients posting paid work | Agencies and freelancers prospecting new clients |
| Benchmarking budgets and bid counts by skill | Freelancers setting their own rates |
| Tracking demand for a skill over time | Recruiters and market researchers |
| Building a niche job board or aggregator | Product teams and developers |
| Monitoring competition on specific categories | Service businesses and consultants |

### Frequently Asked Questions

**Which countries and categories does this cover?**
Freelancer.com is a global marketplace, so projects come from clients worldwide and span every category from web development and data entry to logo design and writing. You filter by keyword and skill rather than by country, and budgets are returned in each project's own currency.

**How many projects can I collect in one run?**
You can collect as many active projects as match your search, up to the maxItems limit you set. A single keyword like python typically has dozens to a few hundred active projects at any moment, and the scraper pages through them fifty at a time.

**Can I filter by fixed price or hourly, by skill, or by budget?**
Yes. Use projectTypes to keep only fixed price or hourly projects, jobs to pass one or more numeric skill IDs, and minBudget to drop projects whose average budget falls below a threshold. Leave a filter empty to ignore it.

**Why is the employer or client name missing?**
Freelancer.com withholds the project owner identity on public unauthenticated reads, so client name, rating and country are not available through the public listings. The scraper never invents them. Turning on the include employer option leaves that field null by design.

**What happens when a field has no value?**
Missing values are returned as null and never guessed. Hourly fields are null on fixed price projects, and budgetMax can be null when the client did not set an upper bound. Each record carries an error field that is null on success.



<!-- example-tasks -->
### Example use cases

Ready-to-run example tasks, each preconfigured for a common scenario. Open one and press run, or use it as a template:

- [Freelancer Logo Design Projects](https://apify.com/scrapers_lat/freelancer-scraper/examples/freelancer-logo-design-projects): Pull logo design freelance projects on Freelancer with title, budget, number of bids and skills required.
- [Freelancer Python Projects](https://apify.com/scrapers_lat/freelancer-scraper/examples/freelancer-python-projects): Scrape Python freelance projects on Freelancer with title, budget, bids, skills and employer details.
- [Freelancer Web Design Projects](https://apify.com/scrapers_lat/freelancer-scraper/examples/freelancer-web-design-projects): Track web design freelance projects on Freelancer with title, budget, bids, skills and employer info.

<!-- /example-tasks -->

<!-- related-actors -->
### Related scrapers

Need data from the same space? Here are other scrapers we build and maintain:

- [LinkedIn Job Listings Scraper](https://apify.com/scrapers_lat/linkedin-jobs-scraper): Extract public LinkedIn job postings by keyword and location worldwide. Scrape job title, company...
- [Computrabajo Job Listings Scraper](https://apify.com/scrapers_lat/computrabajo-scraper): Extract job listings from Computrabajo across 19 LATAM countries. Scrape titles, companies...
- [Workable Job Listings Scraper](https://apify.com/scrapers_lat/workable-scraper): Extract public job listings from any Workable-hosted company careers board by account name or board...
- [Talent.com Job Listings Scraper](https://apify.com/scrapers_lat/talent-jobs-scraper): Extract public Talent.com job listings by keyword, location and country: title, company, salary...
- [GetOnBrd Tech Jobs & Salary Scraper](https://apify.com/scrapers_lat/getonbrd-scraper): Extract LATAM tech jobs and salary data from GetOnBrd. Scrape job title, company, category...
- [Dice Tech Job Listings Scraper](https://apify.com/scrapers_lat/dice-jobs-scraper): Extract public Dice.com tech job postings by keyword and location: title, company, location...

<!-- /related-actors -->

<!-- scrapers-lat-cta -->
### More scrapers at scrapers.lat

This actor is built and maintained by [scrapers.lat](https://scrapers.lat), where we publish scrapers for Latin American and US public platforms: real estate, jobs, e-commerce, company registries and government data. Browse the full catalog, see live sample output for each one, or ask us for a custom scraper at [scrapers.lat](https://scrapers.lat).

---

> This actor is an independent tool and has no affiliation with Freelancer.com. It only accesses data that is publicly available on the platform. Use it in accordance with Freelancer.com's terms of service.

# Actor input Schema

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

Maximum number of projects to collect. Optional.
## `query` (type: `string`):

Keyword to search active projects (for example python, logo design, wordpress). Leave empty to browse the newest active projects across all categories.
## `projectTypes` (type: `array`):

Limit to fixed-price and/or hourly projects. Leave empty for both.
## `jobs` (type: `array`):

Optional Freelancer.com skill (job) IDs to filter by, for example 13 (Python), 95 (Web Scraping), 3 (PHP). Enter numeric IDs. Leave empty to ignore.
## `minBudget` (type: `integer`):

Only return projects whose average budget is at least this amount (in the project's own currency). Optional.
## `withEmployer` (type: `boolean`):

Attempt to include the project owner (employer) profile when available. Freelancer.com currently withholds employer identity on public unauthenticated reads, so this field is usually null.
## `proxyConfiguration` (type: `object`):

Optional proxy. The Freelancer.com public API works without a proxy from most networks; enable a proxy only if you hit rate limits.

## Actor input object example

```json
{
  "maxItems": 10,
  "query": "python",
  "withEmployer": false,
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}
````

# 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 = {
    "maxItems": 10,
    "query": "python"
};

// Run the Actor and wait for it to finish
const run = await client.actor("scrapers_lat/freelancer-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 = {
    "maxItems": 10,
    "query": "python",
}

# Run the Actor and wait for it to finish
run = client.actor("scrapers_lat/freelancer-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 '{
  "maxItems": 10,
  "query": "python"
}' |
apify call scrapers_lat/freelancer-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Freelancer Project Listings Scraper",
        "description": "Scrape public freelance project listings from Freelancer.com. Extract title, full description, fixed or hourly type, budget min and max with currency, bid count, average bid, required skills, posting date and the project URL.",
        "version": "0.1",
        "x-build-id": "nN058Yx9wwO2iss3h"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/scrapers_lat~freelancer-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-scrapers_lat-freelancer-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/scrapers_lat~freelancer-scraper/runs": {
            "post": {
                "operationId": "runs-sync-scrapers_lat-freelancer-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/scrapers_lat~freelancer-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-scrapers_lat-freelancer-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": {
                    "maxItems": {
                        "title": "Max Items",
                        "minimum": 1,
                        "maximum": 1000000,
                        "type": "integer",
                        "description": "Maximum number of projects to collect. Optional."
                    },
                    "query": {
                        "title": "Search Query",
                        "type": "string",
                        "description": "Keyword to search active projects (for example python, logo design, wordpress). Leave empty to browse the newest active projects across all categories."
                    },
                    "projectTypes": {
                        "title": "Project Types",
                        "type": "array",
                        "description": "Limit to fixed-price and/or hourly projects. Leave empty for both.",
                        "items": {
                            "type": "string",
                            "enum": [
                                "fixed",
                                "hourly"
                            ],
                            "enumTitles": [
                                "Fixed price",
                                "Hourly"
                            ]
                        }
                    },
                    "jobs": {
                        "title": "Skill IDs",
                        "type": "array",
                        "description": "Optional Freelancer.com skill (job) IDs to filter by, for example 13 (Python), 95 (Web Scraping), 3 (PHP). Enter numeric IDs. Leave empty to ignore.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "minBudget": {
                        "title": "Minimum Budget",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Only return projects whose average budget is at least this amount (in the project's own currency). Optional."
                    },
                    "withEmployer": {
                        "title": "Include Employer",
                        "type": "boolean",
                        "description": "Attempt to include the project owner (employer) profile when available. Freelancer.com currently withholds employer identity on public unauthenticated reads, so this field is usually null.",
                        "default": false
                    },
                    "proxyConfiguration": {
                        "title": "Proxy Configuration",
                        "type": "object",
                        "description": "Optional proxy. The Freelancer.com public API works without a proxy from most networks; enable a proxy only if you hit rate limits.",
                        "default": {
                            "useApifyProxy": false
                        }
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
