The Real Cost of Free
"Open source" is not a price tag. The cheapest way to use OpenSEO is $1 in free DataForSEO credit and a free GitHub account. The most expensive way is the same code, the same UI, and a $400-a-month SERP bill. The interesting question is not which one is cheaper. It is which one is *yours*.
Key Takeaways
- The DataForSEO pricing table in the OpenSEO README is the most honest pricing page in SEO software. It is also a small, quiet rebuke of every "contact sales" page in the industry.
- At the project's defaults, one keyword research call costs 32 credits (~$0.025) without clickstream, 64 with it. The 2× cost is the cost of refined volume numbers. The standard volume is the same Google-Ads-derived number every other tool shows.
- Iceland and ~47 other countries are not covered by DataForSEO Labs. OpenSEO routes them to the Google Ads Keywords Data endpoint at a flat 96 credits per call, no difficulty, no intent, no SERP features. The README's "Iceland problem" is the cleanest example of a country coverage gap I have ever seen described in public.
- For an indie hacker doing 100 keyword research calls a month, the bill is ~$3.50 a month plus 100 rank-tracker pings at $0.012 each = ~$4.70/month. For a five-person agency tracking 5,000 keywords, it is closer to $60–$90 a month. Both are below the floor of any commercial SEO tool.
- The crossover — the volume at which Semrush or Ahrefs becomes *cheaper* than DataForSEO — exists, and it is higher than most people think. I will show you where.
---
I want to start with a number, not a story. The number is 96.
Ninety-six is the number of credits OpenSEO charges for a single keyword research call in Iceland, a country DataForSEO Labs does not cover. The standard rate — the rate you would pay in the United States, the United Kingdom, Germany, Japan, Brazil, or any of the 94 countries DataForSEO Labs serves — is 32 credits. The Iceland call is exactly three times the cost, with no keyword difficulty, no search intent, and no SERP-feature context. The README calls this the "Iceland problem." I think it is the cleanest example of an honest, public pricing decision I have ever read in an SEO tool.
It is also the answer to the first question anyone asks about an open-source SEO tool: "If the code is free, what does it actually cost?"
The OpenSEO project answers that question with a single table in the README. I am going to walk through it line by line, because I think the table is a small work of art and because almost nobody reads pricing pages carefully enough to learn from them. I will then walk through what an actual user pays in two scenarios — an indie hacker running the tool for one site, and a small agency with five clients — and I will show you where the open-source stack stops being cheaper than the SaaS alternatives.
The pricing page most SEO tools do not want you to read
Here is the cost reference, in the order the README prints it, with the assumptions it states explicitly. All costs are in USD. "100 keyword research requests" means 100 calls to the keyword research endpoint, not 100 keywords looked up. "100 domain overviews" means 100 calls to the domain overview endpoint. Default result counts are stated where the README states them.
| Workflow | Default scope | Cost per call | Cost per 100 calls | |----------|---------------|---------------|---------------------| | Rank tracking (weekly) | 100 keywords, depth 50 | — | ~$1.20 / month | | Keyword research (default 150 results) | 100 calls | $0.025 / call | $3.50 | | Keyword research (500 results) | 100 calls | $0.060 / call | $7.00 | | Domain overview (200 ranked keywords) | 100 calls | $0.040 / call | $4.01 | | Backlinks — domain search, default | 100 calls | $0.063 / call | $6.34 | | Backlinks — page search, default | 100 calls | $0.043 / call | $4.30 | | Backlinks — fully explored domain | 100 calls | $0.109 / call | $10.94 | | Backlinks — fully explored page | 100 calls | $0.086 / call | $8.61 |
These are the *DataForSEO* costs. The hosted version of OpenSEO applies a 1.28× markup and sells them as credits (1,000 credits = $1). The self-hosted version skips the markup and bills DataForSEO directly. The two paths share the same code.
I want to point out three things about this table that the form of the table hides.
First, the rank-tracking line is a *month* number, not a *call* number. "100 keywords weekly at depth 50" means you are running one rank-tracking workflow per week, hitting DataForSEO's SERP API four times a month for 100 keywords at a time. The cost is the SERP API cost, not a per-keyword cost. If you are tracking 500 keywords weekly, multiply by five.
Second, "backlinks fully explored" is roughly 2× the cost of the default backlinks call, and the difference is whether you expand every referring domain into its own backlink list. Most users do not need the expanded list. The default is fine for prospecting. The expanded list is what you want when you are doing a deep link audit for a client.
Third, keyword research at 500 results costs 2.4× the default. The default is 150 results, which is what most research workflows actually need. The 500-row tier is the "I am doing content strategy for a 500-page site" tier. I will come back to this.
What an indie founder actually pays
Let me model the most common user I hear from: an indie founder with one site, doing a moderate amount of SEO. The workload I will model is conservative, not aggressive.
- Rank tracking: 50 keywords, weekly, depth 50. Roughly $0.60 a month.
- Keyword research: 50 calls a month at the default 150 results. $1.75 a month.
- Domain overview: 10 calls a month, occasional competitor checks. $0.40 a month.
- Backlinks — default domain: 10 calls a month. $0.63 a month.
Total: $3.38 a month. Plus DataForSEO's $50 minimum top-up, which is a one-time hurdle.
Now the same founder using Semrush Pro at $139 a month. They get most of these features, plus a few they do not need, plus the Semrush database for "competitive research," which is mostly a UI for the same DataForSEO data plus a few proprietary enrichment layers. The math at this volume is not close. OpenSEO is 40× cheaper.
This is not a fair comparison yet, because the Semrush user also gets a backlink database updated daily, a content template generator, a position-tracking UI with a year of history, and a 7-day free trial of the Guru tier. They are not paying for the SERP lookups. They are paying for the dashboard and the database. I will not pretend the dashboard is worthless. It is just not what an AI-driven workflow needs.
What a five-person agency actually pays
The agency scenario is where the comparison gets interesting. A five-person agency with 20 active client projects, each tracking 250 keywords weekly and running roughly 200 keyword research calls per project per month, is doing serious volume.
- Rank tracking: 20 projects × 250 keywords × 4 weekly checks. SERP API cost: roughly $48 a month at this scale.
- Keyword research: 20 projects × 200 calls = 4,000 calls. $140 a month at default 150 results. $280 a month at 500 results.
- Domain overviews: 20 projects × 50 calls. $40 a month.
- Backlinks — default: 20 projects × 30 calls. $38 a month.
Total: ~$266 a month at defaults, ~$406 a month if every keyword research call is at 500 results. The $50 minimum is irrelevant. The agency is paying for the markup, not the floor.
The agency Semrush bill for the same workload is a Business seat at $449/month × 5 analysts = $2,245 a month, or roughly $27,000 a year. The agency is paying for the dashboard, the historical data, the multi-seat permissions, and the content tool, but it is also paying a 5–8× premium over DataForSEO's actual costs. The premium funds product development, sales, and the data enrichment layer Semrush has built over fifteen years.
The crossover — the volume at which the SaaS stops being a luxury — sits somewhere between the indie founder and the agency. Roughly: above ~$2,000 a month in DataForSEO spend, the SaaS starts to compete on features rather than price, and below that line, the open-source stack is structurally cheaper. Most agencies operate well below $2,000 a month in raw DataForSEO usage. Most solo founders operate well below $200 a month.
The Iceland problem, in detail
The Iceland number is interesting for a different reason. DataForSEO Labs supports 94 countries. Iceland is not one of them. If you are an Icelandic business, or a marketing agency with an Icelandic client, the standard keyword research call does not work for you. OpenSEO's solution, described in specs/0004-keyword-data-source-routing.md, is to route the call to a different DataForSEO product — the Keywords Data Google Ads endpoint — at a flat $0.075 per call, regardless of result count. In credit terms, that is 96 credits. The standard 150-result call in a Labs country is 32 credits.
The flat pricing has a quiet consequence. If you are running a 500-result call in the United States, you pay 77 credits. If you are running the same 500-result call in Iceland, you pay 96 credits. The marginal cost of more results is zero in Iceland, but the entry fee is 3×. The README's framing is correct: it is not a worse tool, it is a different shape of tool, and the project is honest about the trade-off.
The honest part is what I want to underline. Most SEO tools do not publish the country coverage gap. They pretend every country works and silently serve lower-quality data, or they block the country entirely. OpenSEO prints a table, routes the call, and labels the result with keywordDifficulty: null and intent: "unknown" so the agent — and the human — knows what they are looking at. That is a small design decision that tells you most of what you need to know about the team.
The bar-tab problem
I think of the cost difference as a bar tab.
Semrush is a closed bar tab. You hand over a credit card, you get charged $449 a month, and the bartender decides what is on it. You can drink less, but you cannot unbuy the subscription. If you stop drinking for a month, you still pay. The incentive structure is built for the bar, not for you.
OpenSEO is an open bar tab. You pay for what you consume. The bartender hands you a price list at the door. If you do not drink, you do not pay. If you drink a lot, you pay a lot, but you know what each drink costs and you can see the running total. The incentive structure is built around the drinks, not the bar.
The closed bar tab is comfortable. You do not have to think about it. The open bar tab is honest. You have to decide what to drink.
For a workload under ~$400 a month in actual DataForSEO usage, the open bar tab is cheaper. For a workload over ~$2,000 a month, the closed bar tab starts to compete on features. The interesting range is the middle, where an agency is paying $400–$2,000 a month for SEO data — too big for a personal project, too small for a Semrush Business seat. That is the range where the architectural decision to make the metered path the easiest path, which I will dig into in the next chapter, matters the most.
The bill is downstream. The architecture is the story.
---
References:
- OpenSEO README — DataForSEO cost reference
- DataForSEO SERP API pricing
- DataForSEO Keywords Data API pricing
- Spec 0004 — Keyword data source routing and the clickstream default
---
The bill is downstream. The architecture is the story. And the architecture is in wrangler.jsonc.