Market rate for a skill
rate_benchmarkWhat freelancers with a given skill LIST as their hourly rate, as a distribution rather than an average.
Use this to sanity-check a rate before quoting, or to see whether a posted
budget is above or below what the market asks. skill is matched loosely
against profile titles, so "django", "react native" and "smm" all work;
country optionally narrows to one market, spelled as it appears on a
profile ("United States", "Poland").
Returns p25 / median / p75 / p90, the share holding Top Rated, and the
sample size. AGGREGATE ONLY — never a name, never a row. Nothing is returned
below a floor of five freelancers, because a statistic over fewer than that
describes an individual; you get insufficient_data instead of a number.
These are LISTED rates, what freelancers ask. It is not what buyers paid — for that, ask get_buyer_quality about a specific client.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| skill | Yes | a skill name; matched loosely against title, skills and inferred skills. Must not be empty — there is no 'all skills' query. | |
| country | No | Narrow the census to one country, written as the census spells it ("United States", "Ukraine"). Omit for the global distribution. Narrowing can drop the sample below the five-profile floor, which is answered as insufficient_data rather than as a number. |
Output Schema
| Name | Required | Description | Default |
|---|---|---|---|
| n | No | Freelancers in the sample. | |
| p25 | No | 25th percentile of listed rates. | |
| p75 | No | 75th percentile. | |
| p90 | No | 90th percentile. | |
| note | No | Present when the sample was too small to report. | |
| basis | No | That these are rates freelancers ASK, not what buyers paid. | |
| skill | No | The skill asked about. | |
| median | No | Median listed rate. | |
| country | No | The country, when one was given. | |
| k_floor | No | The floor itself. | |
| currency | No | Always USD/hr. | |
| top_rated_share | No | Share of the sample holding Top Rated. | |
| insufficient_data | No | True below the five-profile floor. Not an error: a statistic over fewer than five describes an individual. |