State of the Upwork
Continued from work originally published by Aaron Melton at Ascend Automation Agency.

About

Credit

State of the Upwork continues work originally published by Aaron Melton at Ascend Automation Agency (May 2025 – April 2026). Methodology, taxonomy, and report structure follow Aaron's framework with permission. AI-keyword tracking, AI-generated narrative, and the public CSV/JSON API are additions.

Methodology

  • Daily scrape of every automation-related Upwork job posting via the jupri/upwork Apify actor.
  • Keyword matching is substring-based on job title + description (case-insensitive). A job mentioning Zapier AND n8n counts in both buckets.
  • Average rate is dragged by outliers; we publish median and 25th/75th percentile rates alongside it. Aaron's reports never showed median.
  • Rate buckets: Ultra-Premium $150-500, Premium $100-150, Expert $75-100, Experienced $50-75, Mid-Tier $40-50, Entry $25-40.
  • AI keyword categories (new in SOTU): Claude/Anthropic, OpenAI/GPT, AI Agents, RAG, Vector DBs, LangChain, Voice AI, AI Builders (Lindy/Bardeen/etc), MCP, Embeddings.
  • Pre-May-2026 historical trend lines are sourced from Aaron's published markdown tables; SOTU's own data starts May 2026.

Public data

  • JSON API — current month, CORS open
  • CSV download — anonymized, aggregated
  • Add ?month=YYYY-MM to either endpoint for any archive month.

Limitations

  • Jobs may mention multiple platforms (overlap exists).
  • Generic automation jobs without platform mentions are excluded from platform counts but still appear in totals.
  • Rates are posted maximums, not actual contracted rates.
  • Sample is limited to Upwork — not the broader freelance market.
  • Substring matching can catch incidental mentions (e.g. "excel" inside "excellent"). We accept the noise to maintain continuity with Aaron's taxonomy.
Run by Redwater Revenue. Questions or corrections: open an issue on the GitHub repo or message Nick.