Freelancer.com Projects Scraper avatar

Freelancer.com Projects Scraper

Pricing

Pay per event

Go to Apify Store
Freelancer.com Projects Scraper

Freelancer.com Projects Scraper

Scrape Freelancer.com project listings by skill/category — title, full description, skill tags, average bid, bid count, days left, and URL. Structured JSON/CSV output for freelance-market research, competitor pricing benchmarks, and lead-gen tooling. No login required. Freelance job and gig data.

Pricing

Pay per event

Rating

0.0

(0)

Developer

DevilScrapes

DevilScrapes

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 days ago

Last modified

Categories

Share

Freelancer.com Projects Scraper

Freelancer.com Projects Scraper

$4.20 / 1 000 results ($0.20 per run + $0.004 / result) — pay only for results, no credit card to try.

Pull structured project rows straight off Freelancer.com's public project-search pages, by skill or category — no login, no browser, no API key. We do the dirty work so your dataset stays clean.

🔥 What this scrapes

Freelancer.com's /jobs/<skill> search pages list open projects for a given skill or category — title, full description, skill tags, the current average bid, bid count, and days left to bid. This Actor turns that into typed, Pydantic-validated dataset rows you can export straight to JSON or CSV.

✨ Features

  • 🎯 Search by any skill or categorypython, react, wordpress, logo-design, anything that maps to freelancer.com/jobs/<skill>.
  • 📄 Multi-page, per-skill — set how many pages to fetch per skill; server-side pagination confirmed live (/jobs/<skill>/2 returns a fresh page of projects).
  • 🧊 Clean, typed rows — Pydantic-validated, ISO-8601 timestamps, stable field names.
  • 🛡️ We rotate browser fingerprints (curl-cffi impersonation — Chrome / Firefox / Safari) so the target sees real-browser TLS, not Python.
  • 🔁 We retry with exponential backoff on 408 / 429 / 503 / 504 and honour Retry-After. Up to 5 attempts per page.
  • 🌐 Datacenter proxy pinned to a country — Freelancer.com localises currency by exit IP, so we pin the exit and flag any row whose currency doesn't match.
  • 🧱 Per-skill fault isolation — one bad or blocked skill never stops the others. A skill the site doesn't recognise finishes as a clean zero-row result, not a crash.
  • 💰 You pay only for results that land. No data → no charge (only the small actor-start warm-up fee).

🎯 Use cases

  • Freelance-market researchers benchmarking demand and pricing across skills.
  • Agencies tracking what competitors are bidding on and for how much.
  • Lead-gen tooling that needs active Freelancer.com project data at volume.
  • Rate-setting — see what real clients are currently paying for a skill before you quote your own.

⚙️ How to use it

  1. Click Try for free (or Run) on the Actor page.
  2. Enter one or more skills — the path segment from freelancer.com/jobs/<skill>, e.g. python, react, wordpress.
  3. Set maxPagesPerSkill (default 3) and, optionally, countryCode (default US).
  4. Run it. Results stream to the dataset as they're scraped — export JSON or CSV when it finishes, or read incrementally via the API.

📥 Input

FieldTypeDefaultDescription
skillsarrayRequired. One or more skill/category path segments.
maxPagesPerSkillinteger3Pages to fetch per skill (1-20).
countryCodestringUS2-letter ISO code pinning the datacenter proxy exit country.
maxRuntimeSecsinteger300Wall-clock deadline; the Actor stops requesting new pages once spent.
proxyConfigurationobjectDatacenter, pinned USApify Proxy spec. Datacenter is deliberate — see Limitations.
{
"skills": ["python", "react", "wordpress"],
"maxPagesPerSkill": 2,
"countryCode": "US",
"maxRuntimeSecs": 180,
"proxyConfiguration": {
"useApifyProxy": true,
"apifyProxyGroups": [],
"apifyProxyCountry": "US"
}
}

📤 Output

One dataset row per project:

{
"projectUrl": "https://www.freelancer.com/projects/data-analysis/binance-usdt-transaction-analysis",
"projectPath": "/projects/data-analysis/binance-usdt-transaction-analysis",
"title": "Binance USDT Transaction Analysis",
"description": "I need a clear, data-driven picture of every USDT move in my Binance account...",
"skills": ["API Integration", "Data Analysis", "Data Visualization", "MySQL", "Pandas", "Python"],
"budgetType": "fixed",
"averageBidAmount": 128,
"currencySymbol": "$",
"currencyLikelyUsd": true,
"bidCount": 71,
"daysLeft": 6,
"paymentVerified": true,
"featured": false,
"sourceSkill": "python",
"sourcePage": 1,
"scrapedAt": "2026-09-16T12:00:00Z"
}

💰 Pricing

Pay-per-event, no subscription:

EventPrice
Actor start$0.20 / run
Project result$0.004 / row

For a typical run that returns 1,000 rows, that's $4.20 total ($0.20 start

  • 1,000 x $0.004). A run that finds nothing (a skill the site has no matching projects for) only bills the actor-start fee — never a silent full-price charge for zero data.

🚧 Limitations

  • averageBidAmount is the current average bid shown on the search card — not the poster's original min/max budget range. Freelancer.com's public search-results page only exposes the average bid; the min/max range the poster originally set lives behind a much heavier per-project detail page (an embedded Angular state blob), which this Actor does not fetch. If you need the exact posted range, treat averageBidAmount as a market-rate signal, not the listing price.
  • No absolute posting date. The listing page shows "days left to bid," not a timestamp of when the project was posted — daysLeft is what we can give you.
  • Currency follows the proxy exit. We pin countryCode (default US) and a US-based fetch renders $-prefixed USD amounts. Every row also carries currencyLikelyUsd — if it's ever false on a US-pinned run, the exit served an unexpected currency symbol; filter those rows out before trusting the amount.
  • A skill Freelancer.com doesn't recognise returns a generic "Top Jobs" fallback listing, not an error — this Actor detects that fallback and skips it (zero rows for that skill, noted in the run's status message) rather than mislabeling unrelated projects under your requested skill.

❓ FAQ

Does this need a Freelancer.com account? No — the project-search pages are public.

Why datacenter proxy instead of residential? Freelancer.com's search pages returned clean 200s with no anti-bot challenge during testing — datacenter is the cheapest tier that clears reach, so that's what we use by default.

Can I search a phrase instead of a single skill? Use the skill/category path segment as it appears in a Freelancer.com URL, e.g. logo-design for freelancer.com/jobs/logo-design. Multi-word phrases that aren't a real skill slug fall into the "not recognised" case above.

What happens if a page is blocked? We retry with backoff and rotate the proxy session on a 403. If every attempted page for the whole run comes back with no recognisable data at all, the run fails loudly instead of silently returning an empty dataset.

💬 Your feedback

Found a bug, a layout change, or want a field we don't scrape yet? Open an issue on the Actor's Apify Store page or reach out through apify.com/DevilScrapes — we read every report.