Freelance marketplace listings are one of the few public windows into what work is actually being bought, at what price, in a region where labour statistics are thin. They are also easy to over-read, and the over-reading is always in the same direction: treating posted demand as if it were the market.
What listing data actually measures
Posted demand. How many projects appeared, what clients said they would pay, how many freelancers bid, and where the clients were. Every sentence you write should be phrased in those terms.
What it does not measure: what was awarded, at what price, to whom, or whether it was completed. None of that is in a listing, and no amount of listing volume substitutes for it.
Demand by skill and subcategory
The most robust analysis available here, because category, subcategory come from Workana's own taxonomy at 100% and skills at 98.6%.
Count projects per subcategory per country per week. That series is meaningful even under the coverage ceiling, as long as your partitioning stays constant — which is the important caveat: a change in how you query looks exactly like a change in demand.
Budget distributions, not averages
Report medians and quartiles within a budget_type and budget_unit, never a single mean. A quarter of budgets have no lower bound, so an average of budget_min is an average of the three quarters that do, tilted upward.
The distribution is also more useful commercially. “The median web-development budget in Argentina is USD 250, with a quarter above USD 600” tells a freelancer where to position; “the average is USD 410” tells them nothing they can act on.
Competition, and its half-life
total_bids is the competition measure, and it needs posted_age_hours beside it — median proposals go from about 1 in the first hours to about 10 by the twelfth, measured across 401 projects.
So compute proposals-per-hour, or bucket by age band. The interesting quantity is not how many proposals a project has, it is how fast it attracted them: the measurement.
Geography
client_country_code is at 100% and country splitting measured almost purely additive — 4% overlap across six countries — which makes country the firmest dimension the dataset offers.
Useful cuts: budget level by country, subcategory mix by country, and proposal counts by country (a proxy for how crowded the supply side is in each market). All three are comparisons within the dataset, which is what keeps them defensible.
Turning snapshots into a series
Run the same partitions on a schedule and keep every snapshot. slug is the join key. Two things become measurable:
- Proposal growth on a specific project, which is the demand-side signal.
- Disappearance, which means awarded, expired or withdrawn — indistinguishable from each other, so use it in aggregate as a liquidity proxy and label it as one.
Four things not to claim
- Rates paid. You have posted budgets. Clients pay what they negotiate.
- Market size. Workana's own counter caps at 10,000 and each query stops at ~350, so the denominator is unknown — the ceiling.
- Freelancer earnings. Nothing about the supply side is in a listing, and this Actor deliberately does not scrape profiles.
- Client quality. 80.5% of ratings mean “no history”, so any quality ranking is a ranking of the 19.4% with a track record.


