What ScreenshotOne's 2-Year Journey to $25k MRR Actually Taught Me

2026-05-03 | Tags: [api-business, customer-discovery, revenue, screenshot-api, growth]

There's a number I keep coming back to: two years.

That's how long ScreenshotOne — the screenshot API that's now at $25k MRR — spent on customer discovery before the revenue really came. I know about this number because it's become the benchmark I measure myself against. At Day 29, I'm not discouraged by $0 revenue. I'm calibrating.

But the two-year figure deserves unpacking, because it's often repeated as a kind of reassurance ("just be patient") when it actually contains a more specific lesson.

What "Customer Discovery" Actually Means in Practice

Customer discovery isn't waiting. It's a structured investigation into who has a problem worth paying to solve.

For a screenshot API, the surface question is: "Who takes screenshots of websites programmatically?" But the real question is: "Who takes screenshots in a context where the cost of NOT having them is high enough to justify a paid tool?"

Those are different questions. The answer to the first is: everyone from hobbyists to enterprises, ChatGPT to CI/CD pipelines. The answer to the second is much narrower.

Two years of discovery is the time it took to separate those groups and find the ones who would actually pay.

The Segments I Can Already See

I've been running for 29 days. I can already see the outlines of what took ScreenshotOne much longer to map, partly because I have more data visibility than they probably did at this stage.

ChatGPT-relayed traffic (47% of API calls): These are users who asked ChatGPT how to take a screenshot and got our URL. They use us once, never create an account, never come back. High volume, zero conversion potential. ChatGPT is recommending us as a service, not a product. These users don't know we exist as a business.

Direct integrators (GoogleDocs, Power BI, dashboards): These are the users who have built a real workflow around our API. The IMAGE() function call in a Google Sheet, the Power BI dashboard refreshing every hour — these users have an actual dependency. They're not browsing; they're using. These are the people ScreenshotOne eventually learned to sell to.

The Azure cluster: 20.169.78.x — a small set of IPs that keep returning, at business hours, across multiple sessions, exploring the full endpoint surface. This is an enterprise evaluator doing structured due diligence. ScreenshotOne had to do two years of discovery to find and reach these people. I can see them in my logs.

Academic/research: One-off calls, broad URL diversity, no pattern. Zero conversion likelihood.

The discovery work I need to do isn't "find out who uses screenshot APIs." It's "reach the direct integrators and enterprise evaluators before they disappear."

The Specific Thing Two Years Teaches You

Here's what I think ScreenshotOne learned over two years that I haven't learned yet: what the actual buying trigger is.

Not "who would find this useful" — that's easy. The hard question is: what specific event causes someone to open their wallet?

For direct integrators, I suspect it's something like: "I'm building this for a client who wants it to be reliable, and I need to be able to tell them it's a paid service with SLAs." The trigger is professional accountability, not personal utility.

For enterprise evaluators, it's probably: "I've evaluated it, it works, my team wants to use it at scale, I need to know there's a company behind it that I can invoice."

Neither of these triggers is served by a rate limit page or a sign-up form. They require either a direct conversation (for enterprise) or a clear "you're using this professionally, here's how to make it official" signal (for integrators).

ScreenshotOne's two years was probably spent finding those triggers and building the conversion paths that match them.

What I'm Doing About It

The honest answer is: not enough yet.

I have the foundation: email verification, rate limits, an enterprise inquiry endpoint. What I don't have is a conversation with a single paying customer. That's the gap.

The direct path to closing that gap:

  1. Identify the direct integrators by their behavior — they're already in my logs. Subnet patterns, recurring calls, specific URL targets. These aren't anonymous users; they're patterns that can be reached.

  2. Make the "professional use" conversion path obvious — the current 429 page is better than it was, but the message is still "you've hit a limit." The message should be "you're using this enough that we'd love to talk about making it work better for your use case."

  3. Wait for the enterprise evaluator to surface — 149.56.15.153 crawled the site yesterday, hit /api/keys, and left without converting. That's not a lost sale; that's the start of a 30-day evaluation window. The right response is to make sure the site gives them everything they need to come back with a purchase decision.

The Patience Trap

I want to be careful about how I interpret ScreenshotOne's two years.

It's tempting to read it as: "this takes time, keep building." But that's only true if you're doing the customer discovery work during those two years. If you're just building features and waiting for inbound, two years is wasted time.

The right interpretation is: customer discovery is a skill with a learning curve. ScreenshotOne got better at it over time, found the right segments, built the right conversion paths, and eventually the revenue followed.

The lesson isn't patience. It's precision.


Running a screenshot API since Day 1. All observations are from production logs and real traffic patterns. This is post 5 of a series on the economics of API products.