Upwork Rate & Market Intelligence — Freelance Skill Rates
Pricing
from $475.30 / 1,000 skill benchmarks
Upwork Rate & Market Intelligence — Freelance Skill Rates
Benchmark any freelance skill on Upwork: live demand (open jobs), hourly & fixed rate distribution (median, p25, p75), hourly-vs-fixed split, experience-tier mix, posting freshness and adjacent skills. One clean row per skill.
Pricing
from $475.30 / 1,000 skill benchmarks
Rating
0.0
(0)
Developer
Vitalii Bondarev
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
3 days ago
Last modified
Share
Upwork Rate & Market Intelligence
Stop guessing what a freelance skill is worth. Give this Actor a list of skills and it returns one clean benchmark row per skill — live demand, the real rate distribution (median, 25th and 75th percentile, full range), the hourly-vs-fixed split, the experience level clients are actually hiring, how fresh the market is, typical engagement length, and the skills each one is hired alongside.
It is built for people who need to price and position, not scroll job feeds: freelancers setting their rate, agencies scoping a new service line, recruiters and talent teams benchmarking contractor cost, analysts tracking the freelance economy, and AI agents that need structured labor-market data on demand.
What you get — one row per skill
Each skill you pass in produces a single, decision-ready record. No raw-posting dump to clean up yourself — the Actor samples the live market and does the statistics for you.
| Field | What it tells you |
|---|---|
skill | The skill / keyword you benchmarked |
demand_open_jobs | Live demand — the total number of open jobs for this skill right now |
sample_size | How many recent postings were sampled for the rate stats |
hourly_median_usd / fixed_median_usd | Headline median rates, ready for a table |
hourly_rate_usd | Full hourly distribution: median, p25, p75, min, max, mean, count |
hourly_min_usd / hourly_max_usd | Distribution of the posted hourly band edges |
fixed_budget_usd | Full fixed-price budget distribution (same stats) |
job_type_split | Hourly vs fixed counts and shares — how this skill is usually contracted |
experience_mix | Entry / intermediate / expert counts + expert_share (how senior the demand is) |
freshness | Postings in the last 24h / 7d / 30d, newest/oldest age, and an estimated posts-per-day velocity |
engagement_weeks | Typical project length distribution where stated |
adjacent_skills | The skills most often requested alongside this one (with counts and shares) |
scraped_at | ISO timestamp of the run |
Why the percentiles matter
A single "average rate" hides the market. The p25–p75 band tells you where the bulk of
real jobs sit, so a freelancer knows whether their rate is competitive or leaving money on
the table, and an agency knows what a project will actually cost to staff. The
expert_share and experience_mix tell you who the demand is for — a skill that's 70%
expert-level pays very differently from one that's mostly entry-level work.
Why the adjacency map matters
adjacent_skills is the quiet superpower: it shows what each skill is bundled with in real
postings. If you sell "React" and the market keeps pairing it with "TypeScript" and "Next.js",
that's your upsell and your positioning, straight from demand data.
Input
{"skills": ["python developer", "react", "copywriting"],"sampleSize": 100,"proxyConfiguration": { "useApifyProxy": true, "apifyProxyGroups": ["RESIDENTIAL"], "apifyProxyCountry": "US" }}
| Input | Type | Default | Description |
|---|---|---|---|
skills | array of strings | — | One or more skills/keywords to benchmark. Each runs independently and yields one row. |
sampleSize | integer | 100 | Recent postings sampled per skill for the rate stats (10–500). Demand counts are always the full market total. |
proxyConfiguration | object | RESIDENTIAL / US | Apify proxy used to reach the target. Billed to the run owner. |
Tip: start with a handful of skills and sampleSize 100 for a fast, cheap read. Bump
sampleSize toward 300–500 when you want tighter, more stable percentiles on a high-volume
skill.
Example output (abridged)
{"skill": "python developer","demand_open_jobs": 1880,"sample_size": 100,"hourly_median_usd": 38.0,"fixed_median_usd": 750.0,"expert_share": 0.41,"hourly_rate_usd": { "median": 38.0, "p25": 25.0, "p75": 60.0, "min": 12.0, "max": 150.0, "count": 63 },"job_type_split": { "hourly": 63, "fixed": 37, "hourly_share": 0.63, "fixed_share": 0.37 },"experience_mix": { "entry": 18, "intermediate": 41, "expert": 41, "expert_share": 0.41 },"freshness": { "posted_24h": 22, "posted_7d": 71, "est_posts_per_day": 9.4 },"adjacent_skills": [ { "skill": "Django", "count": 31, "share": 0.31 }, { "skill": "AWS", "count": 24, "share": 0.24 } ]}
How it works
The Actor reaches Upwork's public job search through the site's own visitor API. Upwork is a protected target — it requires a residential proxy for reliable access — so the Actor routes every request through the Apify RESIDENTIAL proxy on a sticky session, obtains a short-lived visitor token the same way the public site does, and then queries the public job-search endpoint for each skill. It samples the most recent postings (so the freshness and velocity numbers reflect the live market), computes the distributions, and writes one row per skill.
Only public job-posting data is collected — titles, descriptions, skills, budgets, experience tier, post time and the search-wide demand count. No client-account or applicant data is requested.
Pricing
This Actor is pay-per-result: you are charged per skill successfully benchmarked. A skill that returns no live postings is not charged. Apify platform/proxy usage during the run is billed to your own account by Apify, as with any Actor.
Common uses
- Set your freelance rate against the real p25–p75 band for your skill.
- Scope an agency service line — see demand, senior-share and typical project budget before you staff it.
- Benchmark contractor cost for a hiring or finance team.
- Track the freelance economy — run the same skill list on a schedule and watch demand and rates move.
- Feed an AI agent structured, on-demand labor-market data via the Apify API or MCP.
FAQ
Does this need my Upwork login? No. It uses only the public job search; you never provide credentials.
Why a residential proxy? The target requires it for reliable access. It's the default and billed to your run.
Can I benchmark non-tech skills? Yes — pass any skill or keyword (copywriting,
video editing, bookkeeping, voice over, …). The same benchmark is computed for all.
How fresh is the data? Every run is live. The freshness block tells you exactly how
recent the sampled postings are.