← Developers

Scoring methodology

What goes into a HitSonar Score, in plain terms. Everything here is also machine-readable: every response carries the same numbers under score.explanation, with the exact formula used for that one run.

The one opportunity number

score.overall is the only opportunity score HitSonar returns, 0 to 100, with score.grade as its letter (A from 70, B from 55, C from 40, D from 25, else F). It is demand adjusted down for how hard the first page looks to break into. Nothing else in a response competes with it — in particular, ranking.serpOpening below describes a results page, not an opportunity, and is never itself a score.

Demand

How much a phrase is searched, on a 0-100 log scale. Built from a monthly-searches figure: a paid volume provider’s number when one answered, or HitSonar’s own modeled estimate otherwise. The modeled estimate is fitted from two things the first page of results reveals — how many views its videos get a month, and how often the phrase itself shows up in their titles — then scaled down when YouTube’s own autocomplete offers few completions for the bare phrase, evidence that few people type it at all. A trend nudge of +5, -5, or 0 is added for a phrase that is currently rising or falling on Google’s YouTube-search Trends index.

Competition

How hard the first page is to break into, 0-100, lower is easier. Fitted from the same first page: a higher share of small, unestablished channels lowers it; a higher share of large or highly subscribed channels raises it. Without a usable first page it sits at the middle, 50, and score.competitionConfidence reports that as low.

Search bands, not raw numbers

A modeled search estimate is honest about its own precision: it is reported as a tenfold band (score.searchBand, e.g. “10K to 100K”) rather than a specific figure dressed up as more precise than it is. Lead a UI with the band. searchesLow/searchesHigh give a rough range beneath that for anyone who wants one; a paid provider’s figure, when there is one, is exact and is both ends of that range.

Confidence

score.confidence and score.competitionConfidence say how much evidence a number rests on, not how good the opportunity is. Competition confidence drops when most first-page channels hide their subscriber count.

Complete, degraded, provisional

analysisStatus discloses how much of the analysis actually ran. complete means a first page was read and every supporting signal answered. degraded means there is a first page, but a supporting signal (autocomplete, Trends, or the volume provider) failed, or most channel sizes on the page are hidden. provisional means there was no usable first page at all: demand is a rough guess from autocomplete alone and competition sits at the default. Every screen that shows a HitSonar Score must mark a provisional one as provisional — it is evidence, not a finished read.

Modeled vs. provider volume

volumeStatus says where the search figure came from: modeled (HitSonar’s own estimate), provider (a paid provider answered), or one of two fallback states when a configured provider did not have or could not return data and HitSonar fell back to its own model. The notes on a response never say “modeled” when a provider actually supplied the figure.

SERP opening

ranking.serpOpening, 0-100, describes one results page on its own terms: a higher number means more small channels and more recently uploaded videos hold spots on it. It is not an opportunity score and is not an input to one — a page can look wide open and still sit behind low demand, and score.overall is what accounts for both.

Low-suggestion warning

score.lowSuggestionWarning (none, thin, very_thin, unknown) turns seedSuggestions — how many autocomplete completions YouTube offers for the bare phrase, 0 to 14 — into a label worth showing beside the score: 5 to 9 is thin evidence that people type the phrase, 4 or fewer is very thin. These are labels for the notes, not thresholds in the arithmetic: the scaling itself is a smooth curve, so one more completion never moves demand by more than a few points.

Geography

geo is part of every request, response, and cache key. US is the only geography supported today. Two things do not perfectly match that scope, and geoCoverage discloses both: view and subscriber counts on the first page are worldwide even though the search itself targets the requested geography, and the modeled search estimate was fitted to worldwide reference volumes.

Scoring version

The formula on this page is 1.2.0, frozen. It is not retuned because a handful of scores differ from another keyword tool — every such tool is an estimate too, and the goal is a score that is stable, explainable, and useful over time, not one that imitates someone else’s number. A change that could move a customer’s score ships as a new version with its own frozen test cases; the old version’s numbers never change under anyone. score.version on every response says which formula produced it — store it beside any score you keep, since scores from different versions are not comparable. See the changelog for when a version shipped, and the versioning policy for how a new one is introduced.