Pricing
Pay per event
Freelancer Jobs & Projects Scraper
Scrape Freelancer.com jobs and projects by keyword or category. Extract budgets, bids, skills, descriptions, URLs, and posting signals.
Pricing
Pay per event
Rating
0.0
(0)
Developer
Actor stats
0
Bookmarked
2
Total users
1
Monthly active users
2 days ago
Last modified
Categories
Share
Scrape public Freelancer.com jobs and project listings by keyword, skill category, or direct jobs URL. Export project titles, URLs, budgets, bids, skills, descriptions, payment-verification signals, source search URLs, and scrape timestamps.
What does Freelancer Jobs & Projects Scraper do?
Freelancer Jobs & Projects Scraper turns Freelancer.com project search pages into a clean dataset for lead generation, market research, and workflow automation.
It reads public Freelancer job listing pages such as https://www.freelancer.com/jobs/python/, follows pagination, deduplicates projects, and saves structured rows to the default Apify dataset.
You can use it to monitor new project demand, understand budget ranges, watch skill trends, or route fresh opportunities into your CRM.
Who is it for?
- π§βπΌ Agencies that prospect companies posting work on Freelancer.
- π§βπ» Freelancers that monitor high-fit projects by skill.
- π Market researchers tracking demand for Python, data entry, scraping, AI, design, or other skills.
- π§² Sales teams building lead lists from public project posts.
- π Operators creating alerts for new freelance-market opportunities.
Why use this scraper?
Manual Freelancer search is slow when you need repeatable exports, multiple keywords, and automation-ready data.
This actor gives you:
- structured JSON, CSV, Excel, XML, RSS, and HTML dataset exports;
- keyword and direct URL inputs;
- budget and bid fields for prioritization;
- skill arrays for filtering;
- public-page-only scraping with no login required;
- optional detail-page enrichment when you need longer descriptions.
Data you can extract
| Field | Description |
|---|---|
projectId | Project slug parsed from the Freelancer project URL. |
title | Project title. |
url | Public Freelancer project URL. |
budget | Raw budget or average bid text shown on the listing. |
budgetMin | First numeric budget value when available. |
budgetMax | Second numeric budget value when available. |
currency | Currency symbol or code when visible. |
averageBid | Average bid text when Freelancer displays it. |
bidsCount | Number of bids/proposals shown on the card. |
skills | Freelancer skills/categories attached to the project. |
description | Listing snippet or enriched detail description. |
postedOrRemainingTime | Visible time signal such as days left. |
employerVerifiedPayment | Payment verification signal when visible. |
sourceSearchUrl | Listing page that produced the record. |
detailScraped | Whether detail-page enrichment was attempted successfully. |
scrapedAt | ISO timestamp for the scrape. |
How much does it cost to scrape Freelancer projects?
The actor uses pay-per-event pricing: a small start fee and a per-project result event.
Exact prices are shown on the Apify Store pricing panel. You control spend with maxItems, maxPagesPerSearch, and includeDetails.
For the cheapest monitoring runs, keep includeDetails off and scrape listing cards only.
Input options
keywords
Enter Freelancer skill/category slugs or natural keywords. Examples:
pythondata-entryweb-scrapingreact-jsvirtual-assistant
The actor converts these to public Freelancer /jobs/<keyword>/ pages.
startUrls
Use this when you already have specific Freelancer jobs URLs.
Example:
[{"url":"https://www.freelancer.com/jobs/python/"},{"url":"https://www.freelancer.com/jobs/data-entry/"}]
maxItems
Maximum project rows to save across all searches.
maxPagesPerSearch
Maximum listing pages to scan for each keyword or start URL.
includeDetails
When enabled, the actor visits each public project page to enrich the record. This is slower and costs more compute, so leave it disabled for frequent monitoring.
Example input
{"keywords":["python","web-scraping"],"maxItems":100,"maxPagesPerSearch":5,"includeDetails":false}
Example output
{"projectId":"automation/google-earth-water-tank-mapping","title":"Google Earth Water Tank Mapping","url":"https://www.freelancer.com/projects/automation/google-earth-water-tank-mapping","budget":"$311","budgetMin":311,"budgetMax":311,"currency":"$","averageBid":"$311","bidsCount":48,"skills":["Automation","Data Analysis","Data Entry","Geolocation","Python"],"description":"I have a large-scale mapping task...","postedOrRemainingTime":"6 days left","employerVerifiedPayment":true,"sourceSearchUrl":"https://www.freelancer.com/jobs/python/","detailScraped":false,"scrapedAt":"2026-06-27T00:00:00.000Z"}
How to run it
- Open the actor on Apify.
- Add one or more
keywordsorstartUrls. - Set
maxItemsto your desired dataset size. - Keep
includeDetailsoff for fast monitoring, or turn it on for deeper project text. - Click Start.
- Export results from the Dataset tab.
Tips for better results
- Use Freelancer skill slugs such as
python,data-entry, orweb-scraping. - Use multiple focused keywords instead of one broad query.
- Increase
maxPagesPerSearchwhen you need older projects. - Turn on detail pages only for smaller, high-value searches.
- Schedule the actor daily or hourly for demand monitoring.
Integrations
Connect the dataset to:
- Google Sheets for lead review.
- Zapier or Make for alerts.
- Slack or Discord notifications for fresh jobs.
- Airtable or HubSpot for CRM enrichment.
- BigQuery, Snowflake, or S3 for market analytics.
API usage
Node.js
import{ ApifyClient }from'apify-client';const client =newApifyClient({token: process.env.APIFY_TOKEN});const run =await client.actor('automation-lab/freelancer-scraper').call({keywords:['python'],maxItems:100,includeDetails:false});console.log(run.defaultDatasetId);
Python
from apify_client import ApifyClientclient = ApifyClient('YOUR_APIFY_TOKEN')run = client.actor('automation-lab/freelancer-scraper').call(run_input={'keywords':['python'],'maxItems':100,'includeDetails':False,})print(run['defaultDatasetId'])
cURL
curl-X POST 'https://api.apify.com/v2/acts/automation-lab~freelancer-scraper/runs?token=YOUR_APIFY_TOKEN'\-H'Content-Type: application/json'\-d'{"keywords":["python"],"maxItems":100,"includeDetails":false}'
MCP integration
Use Apify MCP to call this scraper from Claude Desktop, Claude Code, or other MCP-compatible tools.
MCP endpoint:
https://mcp.apify.com/?tools=automation-lab/freelancer-scraper
Claude Code setup:
$claude mcp add apify-freelancer-scraper --transport http https://mcp.apify.com/?tools=automation-lab/freelancer-scraper
Claude Desktop JSON config:
{"mcpServers":{"apify-freelancer-scraper":{"url":"https://mcp.apify.com/?tools=automation-lab/freelancer-scraper"}}}
Example prompts:
- "Scrape 100 Python projects from Freelancer and summarize the most common skills."
- "Find recent web scraping jobs on Freelancer and rank them by budget."
- "Monitor data entry projects and alert me when a project has more than 20 bids."
Scheduling ideas
- Run every morning for sales prospecting.
- Run every hour for competitive bidding workflows.
- Run weekly to track budget movement by skill.
- Run monthly to build freelance-market trend dashboards.
Lead generation workflow
A common workflow is:
- Scrape projects for target skills.
- Filter by budget, bid count, and keywords.
- Send promising project URLs to a CRM.
- Assign outreach or bidding tasks to team members.
- Track which categories generate the best conversion.
Market research workflow
Researchers can group results by skills, budgets, and time windows to understand:
- which skills are in demand;
- average posted budgets;
- how competitive categories are;
- which niches attract many bids;
- which project types are recurring.
FAQ
Can I scrape Freelancer without logging in?
Yes. This actor targets public Freelancer jobs and project pages only. It does not access private account areas, bidding workflows, or messages.
Can I monitor multiple skills in one run?
Yes. Add multiple keywords such as python, web-scraping, and data-entry; the actor scans each search and deduplicates project URLs.
Troubleshooting
Why did I get fewer rows than maxItems?
The search may have fewer available pages than requested, Freelancer may omit duplicate projects, or your maxPagesPerSearch may be too low.
Why are some budgets null?
Freelancer pages do not always expose a clean min/max range. The actor saves raw text when visible and parsed numeric fields when possible.
Why is detail scraping slower?
Detail enrichment opens each project page. For large monitoring runs, listing-card extraction is usually enough and much faster.
Legality and responsible use
This actor extracts publicly available Freelancer.com pages. You are responsible for using the data lawfully, respecting Freelancer's terms, and avoiding spam or abusive outreach.
Do not scrape private account data, messages, or login-only pages.
Related scrapers
Explore other Automation Lab actors:
- https://apify.com/automation-lab/upwork-scraper
- https://apify.com/automation-lab/linkedin-jobs-scraper
- https://apify.com/automation-lab/indeed-scraper
- https://apify.com/automation-lab/company-contact-scraper
Changelog
- Initial version: public Freelancer jobs/project search extraction with optional project detail enrichment.
Support
If a Freelancer page structure changes or you need another output field, open an Apify issue with an example input and run URL.
