Core concepts
Six ideas that make everything else in PicoRank predictable.
Company
The account. Domains, keywords, billing and team members all belong to a company. Everyone you invite joins the same company and sees the same data, subject to their role.
Domain
A site you track. It can be a whole site (example.com) or one path-scoped outlet
(example.com/stockholm) — useful when one website serves several locations or brands and you want them
measured separately. See Domains.
Keyword
A search term you want to rank for. Keywords live in lists, and lists are what scans point at — so grouping keywords by list is how you give different groups different treatment.
Matching is case-insensitive and normalised, but PicoRank remembers the casing you typed and shows it back to you. "iPhone" is not displayed as "iphone" just because that is how it is matched.
Scan
A configuration: this keyword list, on these search engines, on these devices, in these places, on this schedule. A domain can have several — a broad national scan plus a tight local one, for instance — and results can be read per scan.
Slot — the unit that actually matters
A slot is one keyword × one engine-and-device pairing × one geography. It is what your plan allocates, because it is what actually gets fetched and paid for.
Concretely: one keyword, on Google, desktop and mobile, in Stockholm and Gothenburg, is four slots.
This is the single most useful thing to understand about pricing. People are surprised by slot usage when they think in keywords — 100 keywords across two devices and three cities is 600 slots, not 100. Widening a scan's geography multiplies everything in it.
Slots are counted across active scans without de-duplication: two scans covering the same keyword really do fetch it twice. Removing keywords frees capacity at the end of the billing month, not instantly — otherwise delete-and-replace would be a way around what you paid for.
Observation, and what null means
Each fetch records where your domain appeared. If you were not found within the depth we fetch, the position is recorded as null — not 0, not 101.
This matters more than it looks. Averaging "not found" as 100 makes a bad month look catastrophic; averaging it as 0 makes it look perfect. Both are lies. PicoRank keeps the distinction everywhere, including in the API, and reports it as "not in the top 50" rather than inventing a number.
There is a third state: not yet measured. A new keyword has no observation at all, which is different again from being measured and not found.
Job
Anything that takes time and costs money: a rank run, a crawl, a site-optimization analysis, an AI-visibility scan. Jobs are queued, run in the background, and report progress. Starting one while the same kind is already running joins the existing job rather than duplicating the spend.