Extract public Freelancer.com project listings by keyword, category, or URL.
Use this actor to monitor new freelance projects, collect lead lists, compare budgets, track skill demand, and export structured data from public Freelancer.com job result pages.
What does Freelancer Jobs Scraper do?
Freelancer Jobs Scraper collects project cards from public Freelancer.com listing pages.
It returns clean project data such as title, project URL, description snippet, budget, bid count, skills, time left, payment verification, and source metadata.
You can scrape category pages, keyword searches, and exact URLs.
Who is it for?
- ๐งโ๐ป Freelancers looking for fresh project opportunities.
- ๐ข Agencies monitoring outsourcing demand.
- ๐ Sales teams finding companies with active project needs.
- ๐ Recruiters tracking skill demand across public freelance projects.
- ๐ Analysts comparing budgets and proposal competition.
Why use this actor?
Manual Freelancer.com monitoring is repetitive.
This actor turns public project listings into exportable rows.
You can run it every day, connect it to alerts, or send the data to your CRM.
Input settings
| Setting | JSON key | Type / default | Description |
|---|---|---|---|
| Start URLs | startUrls |
array, default [{"url":"https://www.freelancer.com/jobs/web-scraping/"}] |
Freelancer.com jobs, category, keyword, or paginated URLs to scrape. |
| Keyword searches | queries |
array, default ["web scraping"] |
Keywords to search in public Freelancer projects, such as web scraping or lead generation. |
| Category slugs | categories |
array, default ["web-scraping"] |
Freelancer category slugs from URLs, for example web-scraping, python, or data-entry. |
| Maximum projects | maxItems |
integer, default 20 |
Maximum number of project listings to save across all sources. |
| Maximum pages per source | maxPages |
integer, default 2 |
Maximum paginated Freelancer result pages to open for each source. |
| Proxy configuration | proxyConfiguration |
object, default {"useApifyProxy":false} |
Optional Apify Proxy settings. Leave empty for direct requests; use datacenter proxies first if your runs are rate limited. |
Input options
You can combine multiple source types in one run.
startUrlsaccepts Freelancer.com job, category, search, and paginated URLs.queriesaccepts keyword strings such asweb scraping.categoriesaccepts category slugs such asweb-scrapingorpython.maxItemslimits total saved projects.maxPageslimits pages opened per source.proxyConfigurationlets you enable Apify Proxy if needed.
Example input
{
"startUrls": [
{
"url": "https://www.freelancer.com/jobs/web-scraping/"
}
],
"queries": [
"web scraping"
],
"categories": [
"web-scraping"
],
"maxItems": 20,
"maxPages": 2,
"proxyConfiguration": {
"useApifyProxy": false
}
}
Output example
{
"title": "Build a High-Speed Python Automation Bot for My Website",
"url": "https://www.freelancer.com/projects/automation/build-high-speed-python-automation",
"projectId": "build-high-speed-python-automation",
"slug": "build-high-speed-python-automation",
"category": "automation",
"descriptionSnippet": "I am looking for an experienced Python automation developer...",
"budget": "$250",
"currency": "USD",
"bidCount": 48,
"averageBid": "$250",
"timeLeft": "6 days left",
"postedAt": null,
"skills": ["Automation", "Python", "Selenium", "Web Scraping"],
"clientVerifiedPayment": true,
"sourceUrl": "https://www.freelancer.com/jobs/web-scraping/",
"scrapedAt": "2026-07-02T08:00:00.000Z"
}
How to scrape by category
- Open a Freelancer.com category page.
- Copy the slug from the URL.
- Add it to
categories. - Set
maxItems. - Run the actor.
- Export the dataset.
How to scrape by keyword
Add one or more keyword phrases to queries.
The actor creates public Freelancer jobs search URLs and extracts matching project cards.
Use specific phrases for better lead quality.
How to scrape exact URLs
Paste public Freelancer.com URLs into startUrls.
This is useful when you already have a search URL, category URL, or page 2+ URL you want to monitor.
Tips for better results
- ๐ฏ Use specific categories for focused lead lists.
- ๐งช Start with
maxItemsbetween 20 and 50. - ๐ Use scheduled runs for daily monitoring.
- ๐งน Remove duplicate rows by
urlin your downstream tool. - ๐ Enable proxy only if your network is rate limited.
Integrations
Send output to Google Sheets for lead review.
Send output to Airtable for enrichment.
Send output to a CRM for sales follow-up.
Send output to Slack or email for new project alerts.
Use Apify webhooks to trigger workflows after each run.
API usage
Run Freelancer Jobs Scraper from your own code with the Apify API.
Node.js
import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const input = {
"startUrls": [
{
"url": "https://www.freelancer.com/jobs/web-scraping/"
}
],
"queries": [
"web scraping"
],
"categories": [
"web-scraping"
],
"maxItems": 20,
"maxPages": 2
};
const run = await client.actor('fetch_cat/freelancer-jobs-scraper').call(input);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);
Python
from apify_client import ApifyClient
import os
client = ApifyClient(os.environ["APIFY_TOKEN"])
run = client.actor("fetch_cat/freelancer-jobs-scraper").call(run_input={
"startUrls": [
{
"url": "https://www.freelancer.com/jobs/web-scraping/"
}
],
"queries": [
"web scraping"
],
"categories": [
"web-scraping"
],
"maxItems": 20,
"maxPages": 2
})
items = client.dataset(run["defaultDatasetId"]).list_items().items
print(items)
cURL
curl -X POST "https://api.apify.com/v2/acts/fetch_cat~freelancer-jobs-scraper/runs?token=$APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{"startUrls":[{"url":"https://www.freelancer.com/jobs/web-scraping/"}],"queries":["web scraping"],"categories":["web-scraping"],"maxItems":20,"maxPages":2}'
Use with AI agents via MCP
Freelancer Jobs Scraper can be used by AI assistants through the hosted Apify MCP server.
Claude Code setup
claude mcp add --transport http apify "https://mcp.apify.com?tools=fetch_cat/freelancer-jobs-scraper"
Claude Desktop, Cursor, or VS Code JSON config
{
"mcpServers": {
"apify": {
"url": "https://mcp.apify.com?tools=fetch_cat/freelancer-jobs-scraper"
}
}
}
Example prompts
- "Run Freelancer Jobs Scraper with this input JSON and summarize the dataset."
- "Export the latest Freelancer Jobs Scraper results to a table I can review."
- "Schedule this Actor for monitoring and tell me what changed between runs."
Scheduling
Create a scheduled Apify task to run this actor daily or hourly.
Use a low maxItems value for frequent monitoring.
Use higher limits for periodic market research.
Data quality notes
Freelancer.com listing pages show public project summaries.
Some fields may be missing when Freelancer does not show them on a listing card.
Private or removed projects may not expose full details.
Limits
The actor extracts public listing-card data.
It does not log in.
It does not submit bids.
It does not message clients.
It does not bypass private project restrictions.
Legality
Only scrape public data.
Respect Freelancer.com's terms and applicable laws.
Do not use the data for spam.
Use reasonable run sizes and schedules.
Troubleshooting
Why did I get fewer results than maxItems?
The selected pages may contain fewer public projects, duplicates, or ended projects.
Increase maxPages or add more categories.
Why are some budgets or dates empty?
Freelancer.com does not show every value on every listing card.
The actor returns null when a public field is not visible.
Should I use a proxy?
Start without a proxy.
If you see rate limits from your network, enable Apify Proxy with a datacenter group first.
Support
Report bugs, wrong output, blocked runs, or missing fields from the Actor page. Include the Apify run ID or run URL, your input JSON, what you expected, what the Actor returned, and one reproducible public URL so the issue can be tested quickly.