Freelancer Jobs Scraper avatar

Freelancer Jobs Scraper

Pricing

from $0.06 / 1,000 freelancer project saveds

Go to Apify Store
Freelancer Jobs Scraper

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

Automation Lab

Maintained by Community

Actor 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.

FieldDescription
titleProject title shown on Freelancer
urlAbsolute project URL
projectIdProject URL slug (preserved in both modes)
numericProjectIdNumeric Freelancer project ID (detail mode)
descriptionListing-card description preview
budgetFormatted public budget or hourly rate text
currencyParsed currency symbol, or ISO code in detail mode
minBudgetParsed lower budget value
maxBudgetParsed upper budget value
budgetTypefixed, hourly, or unknown
postedAt / endsAtISO project start and bidding-end timestamps (detail mode)
projectStatusPublic project status (detail mode)
clientPaymentVerifiedPublic client payment verification flag (detail mode)
clientEmailVerifiedPublic client email verification flag (detail mode)
clientPhoneVerifiedPublic client phone verification flag (detail mode)
enrichmentStatusenriched or failed when detail mode is requested
enrichmentErrorConcise reason when one detail page could not be enriched
averageBidParsed visible average bid when Freelancer shows it
bidCountVisible number of bids
timeLeftTime-left label shown on the card
skillsPublic skill tags
categorySlugCategory segment from project URL
sourceUrlSearch/listing page that produced the row
scrapedAtISO 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

  1. Open the actor on Apify.
  2. Add one or more Freelancer job URLs, keywords, or category slugs.
  3. Set maxItems to the number of projects you need.
  4. Enable Enrich project details when you need real budgets or client verification signals.
  5. Optionally set budget filters. For reliable filtering on current cards, use detail enrichment.
  6. 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 maxItems value 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 includeProjectDetails before 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 ApifyClient
client = 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().items
print(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.

Other automation-lab actors may help with adjacent workflows:

  • https://apify.com/automation-lab/indeed-scraper
  • https://apify.com/automation-lab/google-maps-scraper
  • https://apify.com/automation-lab/linkedin-jobs-scraper
  • https://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.