Freelancer.com Scraper - Projects, Budgets & Client Data
Pricing
from $0.44 / 1,000 projects
Freelancer.com Scraper - Projects, Budgets & Client Data
Scrape open Freelancer.com projects. Each row has the budget in its own currency and in USD, marked fixed or hourly, the bid count and average bid, skills, the client's country, rating and verification flags, and the full description. $0.45 per 1,000 projects.
Pricing
from $0.44 / 1,000 projects
Rating
0.0
(0)
Developer
Dami's Studio
Maintained by CommunityActor stats
0
Bookmarked
3
Total users
1
Monthly active users
8 days ago
Last modified
Categories
Share
Scrape open Freelancer.com projects with the budget, the bid count and the average bid: one row per project, next to the skills, the client's country and rating, and the full project description. Freelancer.com works on bidding. The client names a budget, freelancers bid against it, and the site publishes how many have bid and what they are asking on average.
One thing to get straight before you sort anything: on an hourly project, budgetMin and
budgetMax are an hourly rate, not a total. budgetType says which on every row, and mixing the two
is the easiest way to produce a nonsense average.
| Input | A keyword, skills, and budget or bid filters |
| Output | One row per open project: budget, bid count, average bid, skills, client country and rating, description |
| Ceiling | 5,000 projects per run |
| Account needed | None, and no API key |
| Price | $0.45 per 1,000 projects, flat on every plan. The free plan's $5 a month covers about 11,000 |
🔍 What Freelancer.com Scraper does
It searches the open projects, applies your filters, and writes one row each. Skills are the one
filter Freelancer applies itself, so narrowing by PHP or Logo Design is the cheapest and fastest
way to cut a search down. Budget, bid-count and client-country filters are applied afterwards on the
rows themselves, and anything dropped by them is not charged.
Budgets come back in the project's own currency and converted to USD, using the exchange rate
Freelancer returns with each project. That matters because the site is genuinely multi-currency,
and sorting a mixed export on budgetMin without the USD columns gives you a meaningless ranking.
Client details are on by default: country, city, star rating, review count, member-since date and the verification flags. That costs one extra lookup per project, so a big run is slower with them on.
📋 What data you get from each Freelancer.com project
| What you get | Field |
|---|---|
| The project's id, title, description and link | projectId, title, description, projectUrl |
| Fixed or hourly, and the budget as asked | projectType, budgetType, budgetMin, budgetMax, budgetCurrency |
| The budget in US dollars | budgetMinUsd, budgetMaxUsd |
| How many have bid, and the average bid | bidCount, averageBid, averageBidUsd |
| Hours and duration on hourly projects | hourlyCommitmentHours, hourlyCommitmentInterval, hourlyDuration |
| Skills, their ids, and categories | skills, skillIds, categories |
| Listing upgrades and flags | isSealed, isFeatured, isUrgent, isNda, isFulltime, isPremium, isRecruiter, isLocal, bidsHidden |
| Status, dates and when bidding closes | status, postedAt, updatedAt, bidPeriodDays, bidsCloseAt, language |
| Where the work is, for on-site projects | projectCountry, projectCity |
| The client: country, city, rating, reviews, member since | clientCountry, clientCountryCode, clientCity, clientRating, clientReviewCount, clientMemberSince |
| The client's verification flags | clientPaymentVerified, clientEmailVerified, clientPhoneVerified, clientProfileComplete, clientDepositMade |
| Whether the client lookup worked, and when the row was read | clientDetailsFetched, scrapedAt |
▶️ How to scrape Freelancer.com projects
- Open Freelancer.com Scraper and click Try for free.
- Type a term into Keyword, or clear it to take the newest projects site-wide.
- Add Skills if you know them. That is the filter that does the most work.
- Set Maximum projects, then click Start.
- Download the dataset as JSON, CSV or Excel, or read it from the Apify API.
💰 How much does it cost to scrape Freelancer.com projects?
$0.45 per 1,000 projects. Flat on every Apify plan, no volume tiers. On the free plan, the $5 Apify gives you each month covers about 11,000 projects.
You pay per project row you receive. Projects dropped by the budget, bid-count or client-country filters are not charged, the sample row is not charged, and diagnostic rows are not charged. Client details do not add a second charge, they just make the run slower. If you set a maximum cost for the run, it stops when that is reached.
📥 What you give it
None of these fields has a default. The input form arrives pre-filled with a working example, and those values are starting points you can clear.
{"searchQuery": "wordpress","skills": ["PHP"],"projectType": "fixed","maxBids": 5,"minBudgetUsd": 250,"maxItems": 200}
| Field | Form starts at | What it is |
|---|---|---|
searchQuery | wordpress | Free text across open projects. Clear it to take the newest projects site-wide. |
skills | empty | Only projects tagged with these. Use the exact skill name, its URL slug like web-design, or its numeric id. This is the one filter Freelancer applies for you. |
projectType | any | fixed or hourly. |
upgrades | empty | featured, sealed, urgent, NDA. These are rare, well under 1% of projects each, so picking one returns very few rows. |
maxItems | 50 | Hard cap on rows, up to 5,000. |
includeClientDetails | on | Adds the client's country, city, rating, review count, member-since date and verification flags. |
clientCountries | empty | Keep only projects whose client is in one of these. ISO codes like US or full names. Applied after the client lookup, so it is slower than filtering on skills. |
minBudgetUsd, maxBudgetUsd | none | Budget bounds in USD, compared after conversion. |
minBids, maxBids | none | Bid-count bounds. Set maxBids to 5 to find work nobody has quoted on yet. |
sortBy | newest | newest or bids. |
proxyConfiguration | off | Optional. Your own servers are used exactly as given. |
📤 What you get back
A real row from a run on 20 September 2026, with the description cut short:
{"projectId": 40721965,"title": "Bilingual Real Estate Cold Caller","description": "I need someone who can cold call using a U.S. line for several hours each weekday, speak confidently with residential homeowners in both English and Spanish, and secure firm Zoom listing appointments for me...","projectUrl": "https://www.freelancer.com/projects/real-estate/Bilingual-Real-Estate-Cold-Caller","projectType": "hourly","budgetType": "hourly_rate","budgetMin": 15,"budgetMax": 25,"budgetCurrency": "USD","budgetMinUsd": 15,"budgetMaxUsd": 25,"bidCount": 4,"averageBid": 17.5,"averageBidUsd": 17.5,"hourlyCommitmentHours": 40,"hourlyCommitmentInterval": "week","hourlyDuration": "unspecified","skills": ["Sales", "CRM", "Real Estate", "Spanish Translator", "Customer Service", "Lead Generation", "Appointment Setting", "Cold Calling"],"skillIds": [64, 147, 443, 521, 671, 1683, 1694, 3415],"categories": ["Sales & Marketing", "Translation & Languages", "Data Entry & Admin"],"isSealed": false, "isFeatured": false, "isUrgent": false, "isNda": false,"isFulltime": false, "isPremium": false, "isRecruiter": false, "isLocal": false,"bidsHidden": false,"status": "open","postedAt": "2026-09-20T01:27:46.000Z","updatedAt": "2026-09-20T07:28:23.000Z","bidPeriodDays": 7,"bidsCloseAt": "2026-09-27T01:27:46.000Z","language": "en","projectCountry": null,"projectCity": null,"clientDetailsFetched": true,"clientCountry": "United States","clientCountryCode": "US","clientCity": "DORAL","clientRating": 5,"clientReviewCount": 4,"clientMemberSince": "2022-01-03T01:31:14.000Z","clientPaymentVerified": true,"clientEmailVerified": true,"clientPhoneVerified": true,"clientProfileComplete": true,"clientDepositMade": true,"scrapedAt": "2026-09-20T07:45:12.637Z"}
The categories list is cut short; the real row carries five.
| Field | How to read it |
|---|---|
budgetMin, budgetMax | What the client asked for. A total on a fixed project and an hourly rate on an hourly one. Read budgetType before you compare two rows. budgetMax is missing on open-ended budgets. |
averageBid | What freelancers are actually asking, which is often nowhere near the budget. This is the number that tells you the going rate. |
budgetMinUsd, budgetMaxUsd, averageBidUsd | The same figures converted, so a mixed-currency export sorts properly. |
bidCount | null when nobody has bid yet. The bid filters read that as zero. |
clientRating | Only about a third of projects have one, because most clients have never been reviewed. Read clientReviewCount first: a zero-star client with zero reviews is a new client, not a bad one. |
clientPaymentVerified, clientDepositMade | The two flags worth more than the rating when you are deciding whether a client is real. |
bidsCloseAt | When bidding ends, derived from postedAt and bidPeriodDays. |
projectCountry, projectCity | Set only on the small share of projects that need somebody on site. |
skills, skillIds | Names and Freelancer's numeric ids. Feed the ids straight back into skills on the next run. |
🧾 Reading the output
| Row | How to spot it | Charged |
|---|---|---|
| A project | It has a projectId | yes |
| The sample row | _sample: true and charged: false | no |
| A diagnostic | An errorCode and no projectId | no |
Real project rows carry no charged field at all, so filter on _sample being absent rather than
on charged being true.
errorCode | What it means |
|---|---|
NO_RESULTS | The search ran and matched nothing. Loosen a filter or widen the keyword. |
UNKNOWN_SKILL | A skill name could not be matched. Use the exact name from the site, its slug, or its id. |
SKILL_LOOKUP_FAILED | The skill list could not be read. Re-run it. |
API_ERROR | Freelancer answered the search with an error. |
HTTP_ERROR | Freelancer was unreachable or answered badly. |
BAD_JSON | The answer could not be read. Re-run it. |
💡 What people use it for
- Finding fresh work nobody has quoted on:
maxBidsat 5, sorted newest, on a schedule. - Reading the real going rate for a skill, by comparing
averageBidUsdagainstbudgetMinUsdacross a few hundred projects rather than guessing. - Filtering for clients who have actually paid before, using
clientPaymentVerifiedandclientDepositMadeinstead of a star rating most clients do not have. - Watching demand for a skill over time, by running the same skill filter weekly and counting rows.
🚧 What it does not do
- Open projects only. No completed or awarded work, and no history.
- No bid lists. You get the count and the average, not who bid or what each of them said.
- No contests and no freelancer profiles. Projects only.
- About 5,000 projects is as deep as one search goes. Use narrower searches rather than a bigger number.
- Most clients have no rating, so a rating filter of your own would throw away most of the market. The verification flags are the better signal.
- Budget filters need a USD conversion. A project Freelancer gives no exchange rate for is dropped by those filters rather than guessed at.
- Listing upgrades are rare. Filtering on
featured,sealed,urgentorNDAwill return very little. - Rows are a snapshot. Bid counts move fast and bidding closes.
bidsCloseAttells you when. - It is not an official Freelancer.com tool. Dami's Studio is independent and is not affiliated with or endorsed by Freelancer.com, or by any other company named on this page.
🧭 Which freelance scraper do you need?
| If you want | Use |
|---|---|
| Open projects on Freelancer.com, with the budget, bid count and average bid | This one |
| Gigs sellers offer on Fiverr, with prices and delivery times | Fiverr Scraper |
| Open projects on Workana's English, Spanish and Portuguese boards | Workana Jobs Scraper |
| Agencies on Clutch, with their hourly rate band and team size | Clutch Agencies Scraper |
| Remote jobs, with the region the employer hires from | Remotive Jobs Scraper |
| Startup jobs with salary and equity | Wellfound Jobs Scraper |
❓ Questions people ask
Do I need a Freelancer account?
No. Everything here is public project data.
Why is a $15 to $25 budget showing on a project that will take weeks?
Because it is hourly. Check budgetType, which reads hourly_rate on those rows.
Why does the average bid sit above the budget?
That happens a lot. The budget is what the client hoped for and averageBid is what the market is
asking. That gap is the most useful thing on the row.
Why do so many clients have a zero rating?
Because most of them have never been reviewed. clientReviewCount tells you which zeros are new
clients rather than bad ones.
What is the fastest way to narrow a search?
Skills. Freelancer applies that one itself, so it cuts the work rather than just cutting the output.
Can I call it from code or connect it to an AI assistant?
Yes. The API tab has ready-made
code for Python, JavaScript and the command line. For Claude, ChatGPT or another MCP client, connect
https://mcp.apify.com/?tools=fetch-actor-details,dami_studio/freelancer-com-scraper. Either way the
run happens on your Apify account at the same price.
Is scraping Freelancer.com legal?
These are public project listings. Check Freelancer's terms and your own local rules before using the output commercially. Apify's write-up on the legality of web scraping is a good starting point, and we are not lawyers.
🆘 If something breaks
Open the Issues tab on the actor page. Send the keyword or skill and the run ID. If you got a
diagnostic row, its errorCode usually names the problem on its own.