Freelancer.com Scraper - Projects, Budgets & Client Data avatar

Freelancer.com Scraper - Projects, Budgets & Client Data

Pricing

from $0.45 / 1,000 project returneds

Go to Apify Store
Freelancer.com Scraper - Projects, Budgets & Client Data

Freelancer.com Scraper - Projects, Budgets & Client Data

On Freelancer.com the client names a budget and freelancers bid against it, and the site publishes the bid count and the average bid. Every row carries those next to the budget in its own currency, marked fixed or hourly, plus skills, client country and rating. $0.45 per 1,000.

Pricing

from $0.45 / 1,000 project returneds

Rating

0.0

(0)

Developer

Dami's Studio

Dami's Studio

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

5 hours ago

Last modified

Share

Freelancer.com Scraper - projects, budgets, bids and client data

On Freelancer.com the client names a budget and freelancers bid against it, and the site keeps that tally in public: bid_count, how many have already bid, and bid_avg, what they are asking on average. This actor keeps both next to the budget, so you can go after work nobody has quoted on yet (set maximum bids to 5) or read the going rate for a skill.

Each row also carries title, full description, budget, required skills, the client's country and star rating, and the listing upgrade flags. Export as JSON, CSV or Excel. There's nothing to log into and no API key to supply.

It reads Freelancer's own public project API, plus the endpoint the site's project pages call for the employer panel. No browser is involved, which is what keeps runs fast and cheap.

What you get, per project

FieldExample
projectId, title, description, projectUrl40634950, "DNS Configuration and Testing for SMTP Providers"
projectType, budgetTypefixed / fixed_price, or hourly / hourly_rate
budgetMin, budgetMax, budgetCurrency10, 15, USD
budgetMinUsd, budgetMaxUsdconverted with the exchange rate Freelancer returns for that project
bidCount, averageBid, averageBidUsd41, 18.22, 18.22
hourlyCommitmentHours, hourlyCommitmentInterval, hourlyDuration40, week, unspecified
skills, skillIds, categories["System Admin","Linux","DNS"]
clientCountry, clientCountryCode, clientCityUnited States, US, Kansas City
clientRating, clientReviewCount, clientMemberSince5, 1, 2026-08-07T00:00:00.000Z
clientPaymentVerified, clientEmailVerified, clientPhoneVerified, clientProfileComplete, clientDepositMadetrue / false
isSealed, isFeatured, isUrgent, isNda, isFulltime, isPremium, isRecruiter, isLocal, bidsHiddenbooleans
postedAt, updatedAt, bidPeriodDays, bidsCloseAt, status, languageISO 8601 timestamps
projectCountry, projectCityonly set on the ~4% of projects that are local/on-site

Budgets: three different numbers, never blended

Freelancer projects carry money in more than one place, and mixing them produces nonsense. This actor keeps them apart and labels every row:

  • budgetMin / budgetMax is what the client asked for. On a fixed project that is a total. On an hourly project those exact same fields are an hourly rate. USD 15-25 means $15-25 per hour, not $15-25 for the job. budgetType says which, on every single row.
  • averageBid is what freelancers are actually bidding, which is frequently nowhere near the budget. In the sample row above the budget is $10-15 and the average bid is $18.22.
  • Everything is also given in USD (budgetMinUsd, budgetMaxUsd, averageBidUsd) so you can sort a mixed-currency export. Roughly 46% of live projects are in USD and 37% in INR, so this matters.

None of this is estimated or inferred. Every budget is the number the client typed in.

Measured coverage (994 live projects, sampled 8 Aug 2026)

These are the numbers one real run produced:

FieldPresent
description100%
skills100%
budgetMin100%
budgetMax98.3% (the rest are open-ended, e.g. "$100000+")
bidCount / averageBid96.6% (the rest have no bids yet)
clientCountry100%
clientCity95.8%
clientRating above zero31.7%
clientPaymentVerified = true47.5%

That client-rating number is the one to pay attention to. About two thirds of Freelancer clients have never been reviewed, so their rating is a genuine 0 with clientReviewCount: 0. Read the review count before you read the rating; a 0-star client is usually a new one, not a bad one.

Project type split: 76% fixed price, 24% hourly. Listing upgrades are rare: featured 0.5%, sealed 0.5%, urgent 0.6%, NDA 0.4%.

Billing

$0.45 per 1,000 projects, plus a $0.001 start fee per run. It's a flat rate, the same number on the free plan as on any paid one.

One charge per project row you actually receive. Projects dropped by clientCountries, minBudgetUsd, maxBudgetUsd, minBids or maxBids are filtered before billing and cost nothing, as do sample rows, diagnostics and a run that finds nothing.

Speed

Real runs on Apify, 1 GB, no proxy:

RowsWith client detailsTime
5yes3.8 s
250yes27 s
600yes61 s
100no10 s

Client details cost one extra request per project. Turn includeClientDetails off and a run is roughly three times faster.

Filters

Server-side (free, narrows the search before anything is fetched):

  • searchQuery - free text over title, description and skills.
  • skills - exact skill names, slugs or ids, such as ["PHP","Logo Design"].
  • projectType - fixed or hourly.
  • upgrades - featured / sealed / urgent / NDA.
  • sortBy - newest first, or most bids first.

Client-side (applied after fetching; dropped rows are never charged):

  • minBudgetUsd / maxBudgetUsd — compared in USD per project.
  • minBids / maxBids — set maxBids: 5 to find fresh work before the pile-on.
  • clientCountries["US","GB"] or ["United States"].

Why the last group is client-side: Freelancer's max_avg_price parameter is a relevance hint, not a filter (with max_avg_price=100, 34 of 50 returned projects were above it), min_avg_price filters in the project's own currency so "500" means 500 INR on an INR project, and countries[] is accepted and then ignored (0 of 30 returned rows carried any country). Doing it here gives an exact, predictable answer instead of an approximate one.

Limits you should know about

  • ~5,000 projects per search. Freelancer's API stops paging at an offset of roughly 4,990. Past that every page repeats the last one, even when its own total_count claims more. The actor detects the wall, logs it and stops. To go deeper, split the job into several narrower searches (by skill, by keyword, by project type) rather than one huge one.
  • 100 projects per request is the API's real page size, and it often returns 97-99 for a requested 100 because it filters rows out after applying the limit.
  • Active projects only. Closed, awarded and completed projects are not reachable without a logged-in Freelancer account.
  • Bids themselves are not included. The individual bid list needs authentication. You get the count and the average, not who bid what.

What this actor does not do

  • It does not scrape freelancer profiles, only projects.
  • It does not place bids, post projects, or touch your Freelancer account in any way. It never logs in.
  • It does not return contest listings, only projects.
  • It cannot see sealed bid amounts. That is the point of a sealed project. isSealed tells you the project is sealed; bidCount still works.
  • It does not guess. If a client has no rating, the row says clientRating: 0 and clientReviewCount: 0 rather than inventing a number.

Example input

Fresh WordPress work under $500 with fewer than 10 bids, from clients in the US or UK:

{
"searchQuery": "wordpress",
"maxBudgetUsd": 500,
"maxBids": 10,
"clientCountries": ["US", "GB"],
"maxItems": 200
}

Every hourly design project, newest first, without the client lookup (faster):

{
"skills": ["Graphic Design", "Logo Design"],
"projectType": "hourly",
"includeClientDetails": false,
"maxItems": 500
}

Example output

{
"projectId": 40634950,
"title": "DNS Configuration and Testing for SMTP Providers",
"projectUrl": "https://www.freelancer.com/projects/DNS-Configuration-Testing-for-SMTP",
"projectType": "fixed",
"budgetType": "fixed_price",
"budgetMin": 10,
"budgetMax": 15,
"budgetCurrency": "USD",
"budgetMinUsd": 10,
"budgetMaxUsd": 15,
"bidCount": 41,
"averageBid": 18.22,
"averageBidUsd": 18.22,
"skills": ["System Admin", "Linux", "DNS", "Amazon Web Services", "Web Hosting"],
"isSealed": false,
"isFeatured": false,
"clientCountry": "United States",
"clientCountryCode": "US",
"clientCity": "Kansas City",
"clientRating": 5,
"clientReviewCount": 1,
"clientPaymentVerified": true,
"postedAt": "2026-08-08T23:16:03.000Z",
"bidsCloseAt": "2026-08-15T23:16:03.000Z"
}

FAQ

Is there a free Freelancer.com API? Yes. Freelancer publishes a REST API at www.freelancer.com/api/projects/0.1/, and the active project search works without an OAuth token. What it will not give an anonymous caller is the employer: owner_id comes back null on every row and the users map is always empty. This actor fills that gap using the endpoint Freelancer's own project pages call for the employer panel, which is why you get client country and rating here without logging in.

Do I need a Freelancer account or API key? No. Nothing to sign up for, nothing to paste in.

How many projects can I get in one run? About 5,000 per search. That's Freelancer's own paging wall, not a limit imposed here. Run several narrower searches to cover more.

Can I monitor new projects for a keyword? Yes. Schedule the actor with a searchQuery and sortBy: "newest", and de-duplicate on projectId. Freelancer posts thousands of projects a day, so a 15-minute schedule with maxItems: 100 keeps up comfortably.

Why is the client rating 0 on so many rows? Because roughly two thirds of Freelancer clients have never received a review. That's a real 0, not a missing value, so check clientReviewCount alongside it.

Does it include the bids or the freelancers who bid? No. Freelancer requires authentication for the bid list. You get bidCount and averageBid.

Is the budget the total or per hour? Read budgetType. fixed_price means the whole project; hourly_rate means per hour. 24% of live projects are hourly, so this is not an edge case.

Can I filter by client country? Yes, with clientCountries. It's applied after the client lookup, because Freelancer's own countries[] parameter does nothing. Filtered-out projects are not charged.

What does it cost? $0.45 per 1,000 projects, plus a $0.001 start fee per run. Rows that your filters drop, sample rows and error rows are never charged.

Is scraping Freelancer.com legal? This actor reads only public, logged-out project listings through Freelancer's own public API. It collects no private data and does not log in. You're responsible for how you use the output. Check Freelancer's terms and your local rules, especially before contacting clients in bulk.