Freelancer Jobs Scraper
Pricing
from $0.06 / 1,000 freelancer project saveds
Freelancer Jobs Scraper
Scrape public Freelancer.com projects and job listings by keyword, category, budget, bids, skills, and recency for lead generation.
Pricing
from $0.06 / 1,000 freelancer project saveds
Rating
0.0
(0)
Developer
Automation Lab
Maintained by CommunityActor stats
2
Bookmarked
28
Total users
2
Monthly active users
16 days ago
Last modified
Categories
Share
Scrape public Freelancer.com project and job listings from search, skill, and category pages.
Use this actor when you need structured freelance lead data from Freelancer.com without manually opening dozens of search pages.
What does Freelancer Jobs Scraper do?
Freelancer Jobs Scraper extracts public project cards from Freelancer.com job listing pages.
It saves one dataset row per project. Optional project-detail enrichment adds the real public budget range, numeric project ID, project timing/status, and client payment, email, and phone verification signals.
Card-only mode remains the default for the fastest and lowest-cost runs. Enable includeProjectDetails when budgets or client trust signals matter to your workflow.
The actor is designed for public search pages such as:
https://www.freelancer.com/jobs/https://www.freelancer.com/jobs/python/https://www.freelancer.com/jobs/web-scraping/- Freelancer search URLs generated from keywords
Who is it for?
This actor is useful for teams that monitor freelance project demand.
- ๐งโ๐ผ Agencies can find new clients looking for specific services.
- ๐งโ๐ป Freelancers can track projects in their niche.
- ๐ Market researchers can measure demand for skills and categories.
- ๐งฒ Sales teams can discover public project leads.
- ๐งช Product teams can watch emerging service requests.
- ๐ Analysts can export recurring job-market snapshots.
Why use this actor?
Freelancer.com has many public project listings, but manual monitoring is slow.
This actor turns those pages into a structured dataset.
You can run it on a schedule, export results, connect it to automations, or call it from your own application.
What data can you extract?
The actor extracts the fields visible on public listing cards.
| Field | Description |
|---|---|
title | Project title shown on Freelancer |
url | Absolute project URL |
projectId | Project URL slug (preserved in both modes) |
numericProjectId | Numeric Freelancer project ID (detail mode) |
description | Listing-card description preview |
budget | Formatted public budget or hourly rate text |
currency | Parsed currency symbol, or ISO code in detail mode |
minBudget | Parsed lower budget value |
maxBudget | Parsed upper budget value |
budgetType | fixed, hourly, or unknown |
postedAt / endsAt | ISO project start and bidding-end timestamps (detail mode) |
projectStatus | Public project status (detail mode) |
clientPaymentVerified | Public client payment verification flag (detail mode) |
clientEmailVerified | Public client email verification flag (detail mode) |
clientPhoneVerified | Public client phone verification flag (detail mode) |
enrichmentStatus | enriched or failed when detail mode is requested |
enrichmentError | Concise reason when one detail page could not be enriched |
averageBid | Parsed visible average bid when Freelancer shows it |
bidCount | Visible number of bids |
timeLeft | Time-left label shown on the card |
skills | Public skill tags |
categorySlug | Category segment from project URL |
sourceUrl | Search/listing page that produced the row |
scrapedAt | ISO timestamp when the row was saved |
How much does it cost to scrape Freelancer jobs?
The actor uses pay-per-event pricing.
You pay a small start fee per run and a per-result fee for each Freelancer project saved.
Platform pricing uses the minimum accepted tier floor: BRONZE is $0.10 per 1,000 saved listings, with lower prices on higher Apify tiers, plus a $0.005 run-start event.
Actual Store pricing is shown on the Apify actor page before you start a run.
How to scrape Freelancer jobs
- Open the actor on Apify.
- Add one or more Freelancer job URLs, keywords, or category slugs.
- Set
maxItemsto the number of projects you need. - Enable Enrich project details when you need real budgets or client verification signals.
- Optionally set budget filters. For reliable filtering on current cards, use detail enrichment.
- Click Start and export the dataset as JSON, CSV, Excel, XML, or RSS.
Input options
You can use three discovery modes together.
Start URLs
Use direct Freelancer URLs when you already know the page you want.
Example:
{"startUrls": [{ "url": "https://www.freelancer.com/jobs/python/" }],"maxItems": 25}
Keywords
Use keywords to generate Freelancer job-category URLs. For example, web scraping becomes /jobs/web-scraping/.
Example:
{"keywords": ["web scraping", "shopify"],"maxItems": 50}
Category slugs
Use category slugs from Freelancer URLs.
Example:
{"categorySlugs": ["python", "web-scraping", "data-entry"],"maxItems": 100}
Project detail enrichment
Set includeProjectDetails: true to open each selected public project page with bounded concurrency. This mode is slower because it makes one extra request per candidate, but it restores the actual project budget and adds qualification fields.
{"categorySlugs": ["python"],"maxItems": 25,"includeProjectDetails": true,"minBudget": 250}
A single detail-page failure does not fail the run. The Actor keeps the base listing with enrichmentStatus: "failed" and a concise enrichmentError. It never collects bidder profiles as part of enrichment.
Output example
{"title": "Python Web Scraping Project","url": "https://www.freelancer.com/projects/python/example-project","projectId": "example-project","numericProjectId": 12345678,"description": "I need a Python developer to collect public data...","budget": "$250-750 USD","currency": "USD","minBudget": 250,"maxBudget": 750,"budgetType": "fixed","postedAt": "2026-09-10T08:00:00.000Z","endsAt": "2026-09-17T08:00:00.000Z","projectStatus": "active","clientPaymentVerified": true,"clientEmailVerified": true,"clientPhoneVerified": false,"enrichmentStatus": "enriched","averageBid": null,"bidCount": 12,"timeLeft": "6 days left","skills": ["Python", "Web Scraping", "Data Mining"],"categorySlug": "python","sourceUrl": "https://www.freelancer.com/jobs/python/","scrapedAt": "2026-05-30T08:00:00.000Z"}
Tips for better results
- Start with a small
maxItemsvalue to verify your query. - Use category slugs for cleaner niche-specific results.
- Use broad keywords if a specific keyword returns too few listings.
- Leave proxy disabled unless you see blocking.
- Schedule recurring runs to build a time series of demand.
- Enable
includeProjectDetailsbefore relying on budget filters; current listing cards often show average bids instead of project budgets.
Budget filtering
By default, the Actor parses budget text only when it is present on listing cards. Current cards often show an average bid instead, so budget values may be null.
With includeProjectDetails: true, the Actor reads the public project's first-party embedded state and uses its actual budget range and ISO currency code. For example, $250-750 USD becomes minBudget: 250, maxBudget: 750, and currency: "USD".
minBudget keeps projects whose parsed maximum is at least your threshold.
maxBudget keeps projects whose parsed minimum is no more than your threshold.
Budget filters run after detail enrichment when enabled. If one detail fetch fails, the base row is retained; because its budget remains unknown, existing best-effort filter compatibility is preserved.
Proxy settings
Freelancer public job pages usually work without proxy.
If your environment receives blocks, enable useProxy.
You can optionally set proxyGroups such as SHADER.
Residential proxies are not the default because they cost more.
Scheduling workflows
Run the actor daily or hourly to monitor new project demand.
Common schedules include:
- Daily agency lead list for one category.
- Hourly alerts for urgent keywords.
- Weekly market snapshot for pricing research.
- Monthly skill-demand export for reports.
Integrations
You can connect the dataset to downstream tools.
- ๐ฌ Send new matching projects to Slack or email.
- ๐งพ Export CSV files to Google Sheets.
- ๐ง Feed listings into lead scoring workflows.
- ๐ Monitor demand for a niche over time.
- ๐งฉ Combine with CRM enrichment tools.
API usage with Node.js
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: process.env.APIFY_TOKEN });const run = await client.actor('automation-lab/freelancer-jobs-scraper').call({categorySlugs: ['python'],maxItems: 25,});const { items } = await client.dataset(run.defaultDatasetId).listItems();console.log(items.slice(0, 3));
API usage with Python
from apify_client import ApifyClientclient = ApifyClient('YOUR_APIFY_TOKEN')run = client.actor('automation-lab/freelancer-jobs-scraper').call(run_input={'keywords': ['web scraping'],'maxItems': 25,})items = client.dataset(run['defaultDatasetId']).list_items().itemsprint(items[:3])
API usage with cURL
curl "https://api.apify.com/v2/acts/automation-lab~freelancer-jobs-scraper/runs?token=$APIFY_TOKEN" \-H 'Content-Type: application/json' \-d '{"categorySlugs":["python"],"maxItems":25}'
MCP usage
You can use this actor from Apify MCP tools in Claude Code, Claude Desktop, or other MCP-compatible clients.
Use an MCP URL that includes this actor as an enabled tool:
https://mcp.apify.com/?tools=automation-lab/freelancer-jobs-scraper
Claude Code
$claude mcp add --transport http apify-freelancer-jobs https://mcp.apify.com/?tools=automation-lab/freelancer-jobs-scraper
Claude Desktop
Add this remote server configuration (the same mcpServers block also works in Cursor):
{"mcpServers": {"apify-freelancer-jobs": {"url": "https://mcp.apify.com/?tools=automation-lab/freelancer-jobs-scraper"}}}
Cursor
Open Settings โ Tools & MCP โ New MCP Server and use the same MCP URL:
https://mcp.apify.com/?tools=automation-lab/freelancer-jobs-scraper
VS Code
Add .vscode/mcp.json to your project:
{"servers": {"apify-freelancer-jobs": {"type": "http","url": "https://mcp.apify.com/?tools=automation-lab/freelancer-jobs-scraper"}}}
Example prompts:
- "Scrape 25 Python projects from Freelancer and summarize the budgets."
- "Find Freelancer jobs for web scraping and group them by skill tags."
- "Run the Freelancer Jobs Scraper daily and alert me about projects over $500."
Data quality notes
The actor extracts public listing-card data and, only when requested, public project-detail state.
It does not log in.
It does not scrape private messages.
It does not guarantee fields that are not present in public HTML. Detail fields include per-row status metadata so missing enrichment is explicit.
Descriptions are previews from search result cards, not full private project documents. Detail enrichment does not collect bidder profiles or private messages.
Legality
This actor is intended to extract publicly available information from Freelancer.com listing pages.
You are responsible for using the data in compliance with applicable laws, Freelancer.com's terms, privacy rules, and your own data-processing obligations.
Avoid collecting or using personal data in ways that violate privacy, anti-spam, or platform rules.
FAQ
Is this an official Freelancer.com API?
No. This actor extracts public listing-card data from Freelancer.com pages. It is not affiliated with Freelancer.com.
Can it scrape full private project details?
No. Optional enrichment reads only anonymous public project pages. The Actor does not log in or access private pages, messages, or documents.
Troubleshooting
Why did I get fewer results than maxItems?
The source may have fewer public listings for your query, or your budget filters may remove many rows.
Try a broader keyword or a category URL.
Why are some budgets null?
Current listing cards often show average bids instead of project budgets. Enable includeProjectDetails to retrieve the real public budget. If a project closes between listing discovery and its detail request, the base row remains available with enrichmentStatus: "failed".
Should I enable proxy?
Start without proxy.
Enable proxy only if requests are blocked or return empty pages unexpectedly.
Related scrapers
Other automation-lab actors may help with adjacent workflows:
https://apify.com/automation-lab/indeed-scraperhttps://apify.com/automation-lab/google-maps-scraperhttps://apify.com/automation-lab/linkedin-jobs-scraperhttps://apify.com/automation-lab/upwork-jobs-scraper
Changelog
0.2
- Optional public project-detail enrichment for real budgets, numeric IDs, timing/status, and client verification signals.
- Graceful per-item fallback and budget filtering after enrichment.
0.1
Initial version.
- Public Freelancer job listings.
- Keyword, category slug, and direct URL inputs.
- Budget parsing.
- Skill tags.
- Optional proxy support.
Support
If a run fails, include the run URL and input when reporting the issue.
Small reproducible examples are the fastest to debug.
Summary
Freelancer Jobs Scraper gives you structured, exportable Freelancer.com public project listings for lead generation, research, and market monitoring.