The question this answers
Every freelancer eventually asks which skill to pick up next. The usual answers are anecdote: a thread, a friend, a course landing page. None of them know what the jobs in your corner of Upwork are actually asking for, or what those jobs pay.
The Keywords page answers it from your own data. Every job your saved searches find already arrives carrying its skill tags, its budget, and how many people have bid. Counting those is arithmetic over rows you already have, not a new thing to scrape.
Two kinds of saved search
A lead search is what you already run: a narrow, filtered Upwork search whose results you intend to apply to. Its jobs land in the inbox, can be auto-drafted, and are pushed to you.
A research search is the same scan pointed at a broad Upwork search — typescript, say — and its results go nowhere except the count. No inbox row, no draft, no notification. It has its own slot, so it never takes one of your three lead searches.
Set it on the Keywords page, Demand: new market tab: run the search on Upwork, copy the URL from the address bar, paste it in and press Add. It lives there, not on Job Alerts, so you never mistake it for a search that feeds your inbox.
The research slot is checked about once an hour, not on the lead schedule. Counting needs a fair sample, not fresh jobs, and fewer requests against Upwork from the same browser is the thing worth being careful about. Counting is free; scanning is not.
Why the ranking is not a frequency list
Sorting keywords by how often they appear puts javascript at the top and teaches you nothing. Common and valuable are different properties, and the most common skills are usually the ones with the most people already bidding.
So a keyword is ranked on its median budget divided by how many proposals those jobs attract. Volume still counts, but damped — seen more often is better evidence, not a proportionally better opportunity. A narrow, well-paid, lightly-contested skill beats a crowded cheap one even on a fraction of the job count.
What each part of the page does
Show picks which words you see. Gaps is every word you have not marked, most asked-for first — the skills you are missing. Mine is the words you marked. All is the full ranked list.
I have this marks a word as yours, and it moves to Mine. Marked by mistake? Press Undo on the same row, or Mine to unmark it later.
Search type picks which saved searches count. Leads is your normal searches, Research is broad one-word searches, All is both. On All, the Search type column says which kind found the word.
Period is how far back the count reaches: 30 days, 90 days or 1 year.
Word source picks where words come from. Skill tags are the skills Upwork lists on each job. Title words are the words in job titles, with filler like "need" or "urgent" left out. Both mixes them.
In the table, Jobs is how many jobs used the word. Hourly is the typical hourly rate those jobs offer. Fixed is the typical whole-project price. Proposals is the typical number of freelancers who bid. A dash means no jobs of that kind.
Read the change column, not the snapshot
One period tells you what is common. Two periods tell you what is moving. The change column compares the period you picked with the same length of time just before it, and it only appears once that earlier period has counts — before that it is blank rather than invented.
Rising is the signal worth acting on. A skill that has held the same count for a month is a market you can already see; one that has climbed for three weeks is one you can still get ahead of.
Know what it cannot tell you
The numbers come from the jobs your own searches found. That is a corpus, not a market. A skill that none of your searches reach will never appear on the page however common it is on Upwork — the table will look objective and will be silent about everything outside your own field of view.
That is the reason to put a broad word in the research slot. A filtered search only ever shows you words adjacent to what you already do. One wide word is how something genuinely new gets into the count at all.
- Your research slot holds a broad single word, not a filtered search.
- You have let it run for more than one night, so the change column has something to compare.
- You are reading the ranking, not the raw job count.
- You know which skills your searches cannot see.
