Workana Jobs Scraper avatar

Workana Jobs Scraper

Pricing

from $1.74 / 1,000 projects

Go to Apify Store
Workana Jobs Scraper

Workana Jobs Scraper

Scrape open Workana freelance projects on the English, Spanish and Portuguese boards. Each row has the title, full brief, category and skills, budget bracket, fixed or hourly, proposal count, client country and rating, and when it was posted. No account needed. $1.80 per 1,000 projects.

Pricing

from $1.74 / 1,000 projects

Rating

0.0

(0)

Developer

Dami's Studio

Dami's Studio

Maintained by Community

Actor stats

0

Bookmarked

1

Total users

1

Monthly active users

8 days ago

Last modified

Categories

Share

Scrape open Workana freelance projects with budgets, proposal counts and client country: give it a keyword, a Workana category or a search link, and the matching projects come back as rows with the client's full brief, the budget bracket, fixed or hourly, how many freelancers have already sent a proposal, and the client's country and rating.

The catch is coverage. Workana shows a signed-out visitor only part of each search, about 35 to 42% of what its own counter says, and the same part on every run.

InputA keyword, Workana categories, skills or client countries, or Workana search URLs
OutputOne row per open project: title, full brief, category and skills, budget bracket, fixed or hourly, proposal count, client country and rating, posted age as a timestamp
Ceiling2,000 projects per run, 99 pages per search
Account neededNone
Price$1.80 per 1,000 projects on the Free plan, a little less on paid plans. The free plan's $5 a month covers about 2,700

🔍 What Workana Jobs Scraper does

Workana keeps three boards, English, Spanish and Portuguese, and a project sits on exactly one of them. They do not overlap. The same four pages returned 30 English projects and 32 Spanish ones with nothing in common, and the English board is by far the smallest. If you want volume, tick Spanish and Portuguese.

Each combination of language, category, subcategory and country runs as its own search, up to 200 in one run. maxItems is shared out across them, so three boards give you roughly a third each instead of the first one taking the lot.

Budgets are brackets. Workana asks clients to pick one rather than type an amount, so budgetMin and budgetMax are the bracket's edges, and an open-ended bracket leaves that side null: "Less than USD 50" gives budgetMin: null and budgetMax: 50. On an hourly project the numbers are per hour, and budgetUnit says so.

Dates are an age. Workana prints "5 hours ago", never a date, so postedAt is that age turned into a timestamp and postedAtPrecision tells you how far to trust it.

📋 What data you get from each Workana project

What you getField
The project and its stable IDprojectId, projectUrl, title
The client's full briefdescription
Where the client filed it, and Workana's extra questionscategory, subcategory, projectDetails
The skills asked for, with their slugsskills, skillSlugs
Fixed or hourly, and the budget bracketprojectType, budgetText, budgetMin, budgetMax, budgetCurrency, budgetUnit
How many freelancers have pitchedproposalsCount
The client: country, initials, rating, verified payment, plan badgeclientCountry, clientCountryCode, clientNameMasked, clientRating, clientHasRating, clientPaymentVerified, clientPlan
How old it is, and how precise that ispostedRelative, postedAt, postedAtPrecision
Workana's featured and urgent flagsisFeatured, isUrgent
Which board and search it came fromprojectLanguage, searchUrl, page, position, scrapedAt

▶️ How to scrape Workana projects

  1. Open Workana Jobs Scraper and click Try for free.
  2. Type what you are after into Keyword, or leave it empty for the newest projects.
  3. Tick the boards you want under Project language.
  4. Set Maximum projects. To narrow it, open Narrow the search or Filter the results.
  5. Click Start, then download the dataset as JSON, CSV or Excel.

The form arrives with wordpress, English and 50 already filled in, so a run started without editing it is a real search. Called through the API with an empty input, it writes one free sample row and stops.

💰 How much does it cost to scrape Workana projects?

$1.80 per 1,000 projects on the Free plan. Paid plans pay a little less: $1.78 on Starter, $1.76 on Scale and $1.74 on Business. On the free plan, the $5 Apify gives you each month covers about 2,700 projects.

Not charged: the sample row, diagnostic rows, projects dropped by projectType, the proposal counts or postedWithinDays, and repeats. A project that turns up in two of your searches is charged once. If you set a maximum cost for the run, it stops when that is reached.

📥 What you give it

{
"searchQuery": "wordpress",
"languages": ["es", "pt"],
"categories": ["it-programming"],
"clientCountries": ["BR", "AR"],
"maxProposals": 5,
"maxItems": 200
}
FieldDefaultWhat it is
searchQuerynone, the form opens with wordpressFree text, in the language of the board you pick. Empty takes the newest projects on those boards.
languagesEnglishen, es, pt. Each board is searched separately.
maxItems501 to 2,000. The cap on projects for the whole run, shared across its searches.
categoriesnoneTop-level category slugs from Workana's own URLs: it-programming, design-multimedia, sales-marketing, writing-translation, admin-support, legal, finance-management, engineering-manufacturing. Each is its own search.
subcategoriesnoneNarrower slugs such as web-development, e-commerce or wordpress-1. Searched on their own, not combined with the categories.
skillsnoneSkill slugs such as adobe-photoshop or logo-design-1. A wrong slug matches nothing rather than erroring, so try one on the site first.
clientCountriesnoneTwo-letter codes for where the client is: BR, MX, AR, CO, US, ES. Each is its own search.
startUrlsnoneWorkana search URLs copied from your address bar. Their filters are read from the URL, and the category, subcategory and country fields are then ignored.
projectTypeanyany, fixed or hourly.
maxProposalsnoneKeep projects with at most this many proposals.
minProposalsnoneKeep projects with at least this many.
postedWithinDaysnone1 to 365. Keep projects posted in the last N days.
proxyConfigurationnot usedOptional. Only for sending the requests through servers of your own, which are used exactly as given.

projectType, the two proposal counts and postedWithinDays are applied after Workana answers, because the site has no filter of its own for them. Projects they drop never reach your dataset and are never charged. With one of them set, a search reads on until enough pass. It gives up after ten pages in a row with none, and a run where nothing passes stops within 25 pages; the status message says how many were read and passed.

📤 What you get back

A real row from a run on 27 September 2026, with the brief cut short:

{
"projectId": "experienced-wordpress-developer-for-website-page-redesign-and-modernization",
"title": "Experienced Wordpress Developer for Website Page Redesign and Modernization",
"projectUrl": "https://www.workana.com/job/experienced-wordpress-developer-for-website-page-redesign-and-modernization",
"description": "We are a UK-based company seeking an experienced WordPress developer to renew and modernize a specific existing page on ...",
"category": "IT & Programming",
"subcategory": "Wordpress",
"projectDetails": {
"Category": "IT & Programming",
"Subcategory": "Wordpress",
"What is the scope of the project?": "Custom development"
},
"skills": ["WordPress", "HTML", "CSS", "PHP", "Responsive Web Design", "User Interface", "Testing"],
"skillSlugs": ["wordpress", "html", "css", "php", "responsive-web-design", "user-interface", "testing"],
"projectType": "fixed",
"budgetText": "USD 100 - 250",
"budgetMin": 100,
"budgetMax": 250,
"budgetCurrency": "USD",
"budgetUnit": "project",
"proposalsCount": 45,
"clientCountryCode": "GB",
"clientCountry": "United Kingdom",
"clientNameMasked": "R. S.",
"clientRating": 0,
"clientHasRating": false,
"clientPaymentVerified": false,
"clientPlan": null,
"postedRelative": "22 hours ago",
"postedAt": "2026-09-26T16:25:38.599Z",
"postedAtPrecision": "hour",
"isFeatured": false,
"isUrgent": false,
"projectLanguage": "en",
"searchUrl": "https://www.workana.com/jobs?query=wordpress&language=en",
"page": 1,
"position": 1,
"scrapedAt": "2026-09-27T14:25:38.599Z"
}
FieldHow to read it
projectIdWorkana's slug for the project. Stable, so it tells you which projects you already have.
descriptionThe client's full brief, markup stripped, paragraphs kept.
skillSlugsThe slugs behind the skill tags. They go straight into skills on your next run.
budgetMin, budgetMaxThe bracket's edges. Null on the open side of an open-ended bracket, and per hour when budgetUnit says so.
proposalsCountHow many freelancers had pitched when the run read the project.
clientNameMaskedThe client's initials, which is all Workana shows a signed-out visitor.
clientRating, clientHasRating0 with clientHasRating: false means no rating yet, not a bad one. clientPlan is null for most clients.
postedAtPrecisionexact, hour, day, week, month or year. A week row can be days out either way.

🧾 Reading the output

Three kinds of row can share the dataset. Only the first one costs anything.

RowHow to spot itCharged
A projectno _sample and no _diagnostic fieldyes
The sample row_sample: true and charged: false. Only when the input asks for nothing at allno
A diagnostic_diagnostic: true, ok: false, charged: false, and an errorCodeno

Real project rows carry no charged field at all. The sample row has a projectId like a real one, so filter on the flags, not on projectId: drop any row with _sample or _diagnostic and what is left is the projects you paid for.

errorCodeWhat it means
NO_RESULTSThat search kept nothing. Workana had nothing for it, an earlier search in the same run had already turned up everything it found, or your filters kept none of what it read. error says which, and how many projects were read.
BAD_URLA startUrls entry is not a Workana search address.
NO_SEARCHNothing was left to search after reading the input.
RATE_LIMITED, HTTP_ERROR, BAD_RESPONSE, API_ERRORWorkana did not give a usable answer for that search. Worth one re-run a few minutes later.
NOT_SERVEDThis project was not served this run. Re-run it later. Until 12 October 2026 this code was called CHALLENGED.

A diagnostic about one search names it in search, and one failed search does not stop the others.

💡 What people use it for

  • Finding projects few people have pitched on, with maxProposals. On a busy board those are mostly old posts: on Spanish "wordpress" on 30 September 2026, 17 of the first 20 with 5 or fewer proposals were two months old or more.
  • Pricing your own services against what clients actually budget, by category and client country.
  • A daily feed of new projects in one category, with projectId to skip the ones you have already seen.
  • Reading which skills clients ask for together, straight off skillSlugs.

What one kind of work pays, on three marketplaces:

  1. Run this on logo design with languages set to Spanish and Portuguese, and read budgetMin and budgetMax by clientCountry.
  2. Run Freelancer.com Scraper on the same keyword for its budgets, bid counts and average bids.
  3. Run Fiverr Scraper on it to see the starting price sellers ask for the same work.

🚧 What it does not do

  • It does not return every project Workana counts. About 35 to 42% of each search, measured across nine searches in September 2026, because Workana serves a signed-out visitor about 7 of the 20 projects on each page. This does not sign in.
  • No client names or contact details. Workana shows initials to signed-out visitors, and that is all there is.
  • No exact budgets. Workana only ever collects the bracket.
  • No posting timestamp, only the age Workana prints, converted and labelled with its precision.
  • No proposals, messages or freelancer profiles. Open projects only.
  • No budget filter. Filter on budgetMin and budgetMax after you export.
  • Nothing past page 99 of a single search. Workana stops serving there.
  • It is not an official Workana tool. Dami's Studio is independent and is not affiliated with or endorsed by Workana, or by any other company named on this page.

🧭 Which freelance scraper do you need?

If you wantUse
Open projects on Workana, with budgets and proposal countsThis one
Projects on Freelancer.com, with the bid count and the average bidFreelancer.com Scraper
The other side of the market: the gigs sellers offer on FiverrFiverr Scraper
Salaried jobs in Brazil, with the salary Catho showsCatho Jobs Scraper
Remote jobs, with the region you must live inRemotive Jobs Scraper

❓ Questions people ask

Do I need a Workana account or an API key?

No. It reads the same public board a signed-out visitor sees.

Why do I get fewer projects than the Workana search says it found?

Because Workana shows a signed-out visitor only part of each search while counting all of it.

Is postedAt accurate?

To the hour on anything from the last day, to the day within a week, coarser after that. postedAtPrecision says which on every row.

Can I paste a search I built on the Workana site?

Yes. Copy the address bar into startUrls and the keyword, category, skills, country and language are read out of it.

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/workana-jobs-scraper. Either way the run happens on your Apify account at the same price.

These are public project listings, and Workana masks client names itself. 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 input you used and the run ID, and the errorCode on any diagnostic row.