Freelancer Scraper — Jobs, Budgets, Skills, Bids avatar

Freelancer Scraper — Jobs, Budgets, Skills, Bids

Pricing

from $15.00 / 1,000 job scrapeds

Go to Apify Store
Freelancer Scraper — Jobs, Budgets, Skills, Bids

Freelancer Scraper — Jobs, Budgets, Skills, Bids

Scrape Freelancer.com jobs, budgets, required skills, and bid statistics at scale. Filter by skill, budget, language, competition. USD-normalised pricing. Built-in analytics report: skill demand, budget distribution, top opportunities. Proxies included.

Pricing

from $15.00 / 1,000 job scrapeds

Rating

0.0

(0)

Developer

Yuliia Kulakova

Yuliia Kulakova

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

5 days ago

Last modified

Share

Freelancer Scraper — Jobs · Budgets · Skills · Bids

Extract Freelancer.com job listings, budgets, required skills, and bid statistics — at scale, without coding. Built on the public Freelancer REST API for speed and reliability.

banner

Filter by skill, budget, language. Built-in market analytics. Export to JSON, CSV, Excel, XML, or Google Sheets. Proxies included.


What You Get

  • Direct API access — no browser, no DOM parsing. 5–10× faster than Playwright-based scrapers.
  • Up to 10,000 jobs per run with pagination handled automatically.
  • Smart filters that actually work:
    • Skills (["Python", "Django"]) resolved to Freelancer skill IDs server-side
    • Budget range with USD normalisation (projects in INR/EUR are converted before filtering)
    • Low-competition filter (maxBids)
    • Sealed-bid exclusion
    • Hourly vs fixed-price toggle
    • Language filter (ISO 639-1)
  • Built-in analytics report saved to Key-Value Store:
    • Top 30 skills by demand
    • Budget distribution (5 ranges, USD)
    • Competition levels (low/medium/high)
    • Top 10 opportunities (high-budget + low-competition score)
  • Proxies included — no setup, works out of the box.
  • Honest scope: returns project-level data only. Freelancer's public API does not expose client/owner profiles without OAuth — those fields are not in the output (see FAQ).

Use Cases

For Freelancers

Find low-competition jobs in your niche. Set maxBids: 10 + skills: ["React", "Next.js"] and the analytics report surfaces the best opportunities scored by budget / bids.

For Agencies & Researchers

Track market rates by skill, language, or category. Run weekly with a saved input — fresh dataset each run, ready for BI tools or Google Sheets.

For Job Board Builders

Pull Freelancer listings into a unified job feed. Stable REST-API source means no breakage from front-end changes.


Quick Start

Paste this into the Input tab and click Start:

{
"searchQuery": "web scraping",
"maxResults": 100
}

Results appear in the Dataset tab in real time. Analytics report lands in Storage → Key-Value Store → ANALYTICS.


Common Inputs

Low-competition Python jobs

{
"skills": ["Python", "Django"],
"maxBids": 10,
"maxResults": 50
}

High-budget fixed projects ($1k–$5k)

{
"searchQuery": "developer",
"projectType": "fixed",
"minBudget": 1000,
"maxBudget": 5000,
"maxResults": 200
}

Hourly contracts only

{
"searchQuery": "wordpress",
"projectType": "hourly",
"hasExistingBids": true,
"maxResults": 100
}

Category page (everything tagged "Python")

{
"startUrls": [
{"url": "https://www.freelancer.com/jobs/python/"}
],
"maxResults": 500
}

Input Parameters

ParameterTypeDescriptionDefault
searchQueryStringKeywords to searchweb scraping
startUrlsArrayFreelancer.com URLs (/jobs/{slug}/ or /search/projects/?q=...)
projectTypeStringall, fixed, or hourlyall
minBudgetIntegerMinimum average budget (USD-normalised)0
maxBudgetIntegerMaximum average budget (USD-normalised)0
skillsArraySkill names — case-insensitive match against Freelancer's skill catalog
languageStringISO 639-1 (en, de, fr, …)en
maxBidsIntegerOnly projects with fewer than N bids (strict <)0
hasExistingBidsBooleanOnly projects with at least one bid placedfalse
excludeSealedBooleanExclude projects where bids are hiddenfalse
maxResultsIntegerMax jobs per run (1–10,000)100
sortByStringtime_submitted or bid_counttime_submitted
includeAnalyticsBooleanSave analytics report to Key-Value Storetrue
proxyConfigurationObjectOptional — leave empty unless overriding
requestDelayMsIntegerDelay between API requests (ms)500

Output — Dataset Fields

Sample item:

{
"id": 40502083,
"title": "Need AI Chatbot Integrated Into Existing Website",
"url": "https://www.freelancer.com/projects/ai-chatbot-development/Need-Chatbot-Integrated-Into-Existing",
"description": "I'm looking for a developer who can integrate an AI chatbot...",
"previewDescription": "I'm looking for a developer who can integrate an AI chatbot into our existing website.",
"type": "fixed",
"status": "open",
"skills": ["Python", "Linux", "Node.js", "Docker", "Web Development", "AI Development"],
"skillCategories": ["Websites, IT & Software", "Artificial Intelligence"],
"skillIds": [13, 31, 500, 1002, 1031, 2986],
"budget": {
"minimum": 30,
"maximum": 250,
"midpoint": 140,
"midpointUsd": 140,
"currency": "USD",
"currencySign": "$",
"exchangeRate": 1
},
"bids": {
"count": 145,
"avgPrice": 144.82
},
"upgrades": {
"featured": false,
"urgent": false,
"sealed": false,
"nda": false,
"premium": false,
"qualified": false
},
"language": "en",
"isLocal": false,
"bidPeriodDays": 7,
"deadline": "2026-06-16T11:57:37.000Z",
"hoursToClose": 166.7,
"postedAt": "2026-06-09T11:57:37.000Z",
"updatedAt": "2026-06-09T11:57:37.000Z",
"scrapedAt": "2026-06-09T13:15:57.806Z"
}

All Fields

FieldTypeDescription
idIntegerFreelancer project ID
titleStringProject title
urlStringDirect URL to the project page
descriptionStringFull project description
previewDescriptionStringShort summary
typeStringfixed or hourly
statusStringopen, closed, etc.
skillsArrayRequired skill names
skillCategoriesArraySkill category names
skillIdsArrayFreelancer internal skill IDs
budget.minimumNumberMinimum budget (project currency)
budget.maximumNumberMaximum budget (project currency)
budget.midpointNumberMidpoint (project currency)
budget.midpointUsdNumberMidpoint normalised to USD
budget.currencyStringCurrency code (USD, INR, EUR, …)
budget.exchangeRateNumberRate used for USD conversion
bids.countIntegerNumber of bids received
bids.avgPriceNumberAverage bid amount (project currency)
upgrades.featuredBooleanFeatured (paid upgrade)
upgrades.urgentBooleanMarked urgent
upgrades.sealedBooleanBids hidden from other bidders
upgrades.ndaBooleanNDA required
upgrades.premiumBooleanPremium upgrade
upgrades.qualifiedBooleanQualified bidders only
languageStringProject language (ISO 639-1)
isLocalBooleanLocal-only project
bidPeriodDaysIntegerDays project accepts bids
deadlineStringISO 8601 — when bidding closes
hoursToCloseNumberHours remaining (negative if closed)
postedAtStringISO 8601 — when posted
updatedAtStringISO 8601 — last update
scrapedAtStringISO 8601 — when scraped

Analytics Report

Enable includeAnalytics: true (default). Saved to Storage → Key-Value Store → ANALYTICS.

Includes:

  • Summary — total jobs, fixed vs hourly, featured/urgent counts
  • Budget analysis — average, median, distribution across 5 USD ranges (under $50, $50–250, $250–750, $750–1,500, over $1,500), both fixed and hourly
  • Skill demand — top 30 skills ranked by frequency
  • Competition — average bids/project, low (<10) / medium (10–24) / high (25+) breakdown
  • Top categories & languages — most common skill categories and project languages
  • Project upgrades — featured/urgent/sealed/NDA statistics
  • Top opportunities — up to 10 high-budget low-competition projects scored by midpointUsd / (bids + 1)

Pricing

This actor uses pay-per-result pricing:

EventPrice
Actor start$0.01
Per job scraped$0.015

Examples

Jobs scrapedTotal cost
100$1.51
500$7.51
1,000$15.01
5,000$75.01
10,000$150.01

Free Apify trial credit ($5) covers ~333 jobs for evaluation.


Scheduled Runs

Monitor Freelancer.com automatically:

  1. Open the actor → Schedule → New schedule
  2. Set a cron expression (e.g. 0 8 * * * for 8 AM daily)
  3. Fresh dataset each run
  4. Connect to Google Sheets, Airtable, webhooks via Apify Integrations

FAQ

Is this scraper legal? Yes. It uses the same public Freelancer.com REST API that the website itself uses. No authentication bypass, no private data. Review Freelancer.com's Terms for your specific use case.

Does it include client/owner information? No. Freelancer's public API does not return client profile data (username, country, rating, hire rate) without authenticated OAuth access. This actor returns project-level data only.

Do I need to configure a proxy? No. Proxies are included and configured automatically. proxyConfiguration is optional and only used if you want to override with your own.

Why is this faster than other Freelancer scrapers? Most scrapers launch a full browser (Playwright/Puppeteer). This actor uses lightweight HTTP requests to Freelancer's public REST API — no browser overhead, 5–10× faster.

Can I filter by multiple skills at once? Yes. Add names to the skills array. They're resolved against Freelancer's skill catalog (case-insensitive) and applied as an OR filter.

What if a skill name doesn't match? You'll see a warning in the log (No matching skill IDs found for: X) and the actor will return all skills for that query. Skill names must match Freelancer's catalog — Python works, python developer does not (use searchQuery for that).

Can I use a category URL? Yes. Paste https://www.freelancer.com/jobs/python/ into startUrls — the actor resolves the slug to a skill ID automatically.

How accurate is the budget filter? Filtering is done in USD using Freelancer's published exchange rates. Projects in INR, EUR, GBP, etc. are normalised before the min/max check — you won't get noise from currency differences.

Where is the analytics report? Run → Storage tab → Key-Value Store → click ANALYTICS.

What's the default sort order? Newest first (time_submitted). Note: Freelancer may prepend featured/promoted projects above the strict chronological order.


Support

Found a bug or want a new feature? Open an issue in the Issues tab on this actor's page. Response time typically under 24 hours.

Maintained by brilliant_gum on Apify.