Subscription figures are provider list prices recorded in treg.to’s own catalog grid; per-call prices are what treg.to charges today, with $0.000 added.
set up treg — https://treg.to/llms.txt
Using treg, get the average monthly searches, competition and top of page bid for these 200 keywords in the US in English, show me the price per provider first, batch them into as few calls as the provider allows, and sort the table by volume with the ones that returned no data listed separately.
One row charges a flat rate per request for up to a thousand keywords. Sending them one at a time on that row multiplies the bill by a thousand for the same answer.
Volume is per market. A keyword measured across everywhere is a number that describes nowhere, and every row here wants the market stated.
The rows meter in three different ways: per request, per keyword returned, and free on your own account. treg.to prints each before the call.
Google returns nothing for some ordinary words, and a provider that drops them quietly leaves you reading a shorter list than you sent.
treg.to holds the provider keys. Neither you nor the agent sees them.
The provider's own rate, $0.000 markup, from a prepaid balance.
Charged per call. $1.00 free per new team, no card to start.
Already pay Hunter? Register it and those calls are never metered.
Another provider is a different word in the prompt, not a new integration.
No SDK, no OAuth dance per vendor, no seats.
treg.to does not choose for you. It hands ChatGPT this comparison, with the price shown before any call, and ChatGPT picks. Or you tell it how: "cheapest", "most reliable", "the one that takes what I have", or a provider by name.
DataForSEO at $0.09
Serpstat at $0.0005
Those units are not interchangeable: one call can return many results, so compare on the unit you will actually be billed in.
| Provider | Success | Median | Sample |
|---|---|---|---|
| 100% | 1.3s | 603 calls | |
| 100% | 260ms | 1446 calls | |
| 99% | 1.5s | 141 calls | |
| Google Ads | 97% | 388ms | 91 calls |
Measured on treg.to traffic: real calls, real inputs, and sample sizes differ by provider. Live reliability, not a controlled benchmark.
| Provider | Price | Accepts | Success rate | Verified |
|---|---|---|---|---|
| $0.0005 per result | method, params, id, params.keywords, params.se, params.withIntents | 100% (603 calls) | unverified | |
| $0.00179 per result | source, keywords, sort, sort_order, history_from, history_to | 99% (141 calls) | 2026-07-31 | |
| $0.09 per call | keywords, location_code, language_code, search_partners, date_from, date_to | 100% (1446 calls) | 2026-07-28 | |
| Google Ads | free, your own account | customer_id, keywords, geoTargetConstants, language, keywordPlanNetwork, historicalMetricsOptions | 97% (91 calls) | 2026-07-28 |
| no dollar rate published | type, phrase, database, display_date, export_columns, export_escape | not yet measured | unverified |
treg call dataforseo.google.keywords.volume --data '[{"keywords":["coffee"],"location_code":2840,"language_code":"en"}]'Swap the id for any provider above. All 5 endpoints behind this job, with their parameters and captured responses, are on the Google Keyword Data shelf.
SEO tooling threads are seeded on an industrial scale: of the ~180 Reddit and X posts read in August 2026, three near identical six week bake off posts landed on the same recommendation in the same house style, two subreddits in the results were review farms, and one post ran word for word from two different accounts. These five are people with a spreadsheet and a problem.
“It keeps showing me ranges such as 100-1k. This is very hard for me to guess for any good decision I wish to make.” r/googleads
What this page can do about it: The free row on this page is the same Keyword Planner data through the API, and it answers with a figure per keyword rather than a range. That figure is Google's own rounded number, so treat it as a rank rather than a count.
“when i export in CSV it's either 50, 500, 5000 or 50000 for all results” r/googleads
What this page can do about it: That is the data quality floor the API is worth having for. Every row here returns a per keyword field an agent can sort, join and put in a table, which the export cannot give you at any spend level.
“Keyword planner says Low competition keyword top page bid high range is 0.03 cent. Why am I paying 1.28?” r/PPC, 8 points
What this page can do about it: No provider on this page fixes that, and any page that says otherwise is selling. The bid fields are an estimate of an auction. Use them to rank keywords against one another, and take what you actually pay from your own campaign data.
“there are like 20,000 keywords, so it's not something a standard VLOOKUP will work for” r/SEO
What this page can do about it: This is the case per call pricing is for. A flat per request row batches up to a thousand keywords at a time, so twenty thousand is twenty calls at a rate printed before the first one, with no plan to be on.
“lately we've been seeing a lot of traffic in Google Search Console from keywords that don't even exist in the tools we're using” r/SEO
What this page can do about it: Which is the honest limit of every row here. These are models of demand, not records of it. Your own Search Console data is the one source that is actually counting, and it is a free own account row in this same catalog.
It runs on your team's connected Google Ads account, is never metered by treg.to, counts only against the developer token's own daily operation limit, and it returns a figure per keyword rather than the range the Keyword Planner screen shows. The figure is Google's own rounded number and not a raw count. The cost of this row is not money, it is access: Google's flow pushes you towards creating a campaign on the way in, and the developer token is its own approval.
DataForSEO charges a flat rate per request that covers one keyword or a thousand alike, so batching is the whole game; the catalog uses the rate card's price rather than the lower one on the public pricing page, because the rate card is what the account is actually charged. Serpstat and SE Ranking charge per keyword returned, and Serpstat bills its one credit minimum even when a keyword comes back empty. Semrush charges API units with no published dollar rate, so the page prints no price for it and it runs on your own Semrush plan.
Each provider models Google's data its own way, so the same keyword comes back with different volumes on different rows, and Search Console will show you clicks on queries that none of them list at all. The bid range is an estimate of an auction rather than the auction: practitioners regularly report paying many times the figure, or a fraction of it. Use these fields to rank keywords against each other and take your real cost from your own campaign data. treg.to puts the rows side by side; the agent picks, and treg.to never routes or fails over between them.
It is a call that takes a list of keywords and returns what an advertiser's data set knows about each one: roughly how many times a month people search it, how contested it is, and what advertisers are paying at the top of the page. The reason people want it as an API rather than a screen is volume and shape. The Keyword Planner screen shows bucketed ranges to accounts that are not spending, its CSV export collapses everything to a handful of round numbers, and neither is something you can join onto twenty thousand rows. Every provider here answers per keyword, in a response an agent can put in a table.
The Google Ads row is, on your own connected account, and it answers with a figure per keyword instead of the range the screen shows. The other rows are each provider's own model of the same underlying signal, which is why their numbers differ from Google's and from each other.
Only for the free row, which runs on your own connection and is never metered. The paid rows need nothing of yours: they run on treg.to's key and bill from your team's prepaid balance at the provider's rate with $0.000 added, so a list of keywords does not require a developer token or an ad campaign.
Because none of them is counting searches. Each one models Google's published signal in its own way, and this page will not crown one, because there is no ground truth to crown it against. Pull the same list from two rows for a few cents and treat the disagreement as the error bar.
It depends entirely on which row and how you batch. A flat per request row covering up to a thousand keywords is ten calls; a per keyword row is ten thousand chargeable results however you send them; the Google Ads row is free and bounded by a daily operation limit instead. treg.to prints each rate before the call so the agent can say the number first.