The journey to a $1 million ARR SaaS without traditional VCs

Pierre - Apr 13 '22 - - Dev Community

Image description

How it took us almost five years and multiple failed projects to grow a sustainable and almost bootstrapped SaaS.

TL;DR

  • didn't like our full-time job after school
  • heavily inspired by indie hackers / bootstrappers
  • tried to build a B2C shopping app: FAILED ❌
  • tried to build a B2B SaaS, price monitoring for e-commerce: FAILED ❌
  • got the idea to build a web scraping API instead
  • managed to get to $1m ARR, but it took us nearly 3 years to get there πŸ˜…

The early days

SEP 2006

14 years ago. πŸ“…

We (Kevin and Pierre) met in high school in a small town located in the south of France.

JUN 2010

... school ends. πŸ‘¨β€πŸ«

We go learn CS at university. During that time, we started to learn about YC, IndieHackers, Rob Walling's book, the family, and this whole startup/bootstrapping ecosystem.

We learned that you didn't need to raise $100m to build a successful business!

MAY 2016

Time to find a job. πŸ‘¨β€πŸ’»

Kevin works for a small startup doing some invoice and banking data aggregation.

Things are fun.

Then the company was acquired by one of the top 4 big French banks.

Things become less fun.

He quits and starts to write a book about Java and web scraping

Image description


First product

DEC 2017

ShopToList πŸ™‚

We build ShopToList, a price monitoring extension. You save the products you want to buy and get notified as soon as its price drops.

We get a decent traction and have a quite successful ProductHunt launch.

MAY 2018

B2C is freaking hard. ☹️

But that is not enough. We can't find a way to monetize the product and haven't found a scalable way to acquire more users. We sell the product to a web agency and move on to other projects.


Going full-time and building our first SaaS

JUL 2018

First SaaS idea. πŸ’‘

While building ShopToList we notice that many people use ShopToList to spy on their competitor's prices.

In the meantime, Pierre had left his job as a data engineer for the french Zillow.

So this time, we decided to build a price monitoring tool instead.

This time, we will target businesses (B2B) in a validated niche. This makes us confident that this could work.

We were wrong.

SEP 2018

A successful launch. πŸš€

After two months in beta, countless user interviews, and many bug fixes, we finally released PricingBot.

JAN 2019

First customer. πŸ’΅

Soon after getting out of beta, we finally managed to get our first customer. We're ecstatic that real businesses give us real money for a product we make for the first time.

APR 2019

The failure to get traction. πŸ’©

After months of endless marketing experimentation, feature development, and optimizations we have to face that people don't want to pay for our product.

We also notice that we are building into a niche that we don't know well (e-commerce), which shows a lot when talking to potential customers.

We're considering moving on to something else.

Image description


Pivoting to a web scraping API

APRIL 2019

The web scraping API idea. πŸ’‘

While building PricingBot, we used a lot of web scraping tools. And we noticed that all of them shared common flaws: hard to use, slow, not reliable, and not transparent about who operates the business.

Having a lot of experience in web scraping, we decide to scratch our own itch by developing a web scraping API.

MAY 2019

Building the MVP. πŸ› 

We spend the whole month of June working as much as we could on the MVP. We want to validate the product quickly, and to do that we need something that works.

Leveraging some friends we made on web scraping forums and growth marketing communities, we get around ten free beta-testers to try our product.

It allows us to iterate on what is essential to develop quickly.

JUN 2019

The small release. ▫️

Since we didn't want to make the same mistakes we've made with our product, we decide to ask for money as early as possible.

In June, we close the free beta and ask people to take a paid subscription to continue using the product.

To our biggest surprise, the first customer comes 50 minutes after sending the first email. We're delighted, but we know that now the hard part begins.


Building a sustainable SaaS

JUL 2019 🎩

The keys to building a good business. πŸ—

We know that if we want ScrapingBee to work we need two essential things:

  1. a product that sticks: recurring revenue
  2. a scalable acquisition channel

About the first point, we make the bet that most of our customers have regular web scraping needs and that if we make a good product, they'll stay with us.

For the second one, we bet on content. Kevin had been writing a lot about web-scraping in the past years, including a full book, and we think we can attract potential customers by writing good content.

AUG 2019

First content, first success. ✍️

We start trying to write the best possible content. And people love it. Our first big blog post was the "Web scraping without getting blocked" guide. We shared it a bit all over the place, and it quickly got 20,000 visitors. Proof that people like good content, even if it is written on a company blog.

PS: this article has now been read by more than 70,000 people 😎

Image description

OCT 2019

Avoiding distraction. πŸ™‡β€β™‚οΈ

Writing good content was working well, but it was very slow. Slow to produce, but also slow to rank on Google. So we start trying a lot of other acquisition channels to try to speed the business up. It was a mistake, making us lose focus and waste money. We go back to content and spend the time a lot of time writing other web scraping guides in several languages carefully:

  1. Python
  2. Ruby
  3. PHP
  4. C#
  5. NodeJS

DEC 2019

Talking to users a lot. πŸ—£

In the early days, we try to speak to as many people as possible to build the best web scraping tool out there.

But talking to customers can be challenging. Their time is precious, and most of them don't like to speak to companies for fear of getting trapped in an endless upsell call.

So Kevin had the idea to offer 10,000 API calls to anyone willing to discuss their web-scraping needs for 15 minutes over the phone.

This move allowed us to talk to around 100 people in less than three months and learn invaluable insights.

Image description


The road to $10k MRR

MAY 2020

Joining Tinyseed. 🌱

The goal with ScrapingBee was always to find a sustainable business, where we would be in complete control of what happens in the company without having the pressure to grow at all costs. And this is precisely why we never decided to raise money. However, a few years ago, Rob Walling and his friends launched TinySeed. An accelerator designed precisely to help people grow their business, but without any pressure to become a unicorn.

We applied and got lucky enough to get accepted. The money and the support we got from the program helped us grow ScrapingBee into what it is now.

Image description

JUN 2020

Improving the product. πŸ› 

2020 was a very "grind" year. And to be honest, all we did was the same thing over and over. Improving the product, releasing new content. In the spring we focused a lot on the customer experience, doing everything we could to make the API as easy as possible to use. We developed SDK in Python and JavaScript, a brand new documentation with snippets in 7 languages and a request builder.

Image description

OCT 2020

Slowly reaching $10k MRR. 🐌

In November, we finally reach $10,000 Monthly Recurring Revenue. A very symbolic milestone for us, because for the first time, it allowed us to get paid (almost) the same as our previous job, and it also meant that we were profitable.

But as you can see, this took a while. We started working on ScrapingBee almost 18 months before this moment.

Image description

JAN 2021

Growth finally kicks in. πŸš€

The last quarter of 2020 was a magical moment because, for the first time, we felt that growth was finally kicking in.

And while it took us almost 18 months to get to $10k MRR, it took us only 3 months to double our revenue to $20k MRR.

Image description


Growing the business

FEB 2021

Keep doing the things that work. 🌱

In 2021, we decided to focus on our strengths and write great content while trying to build the best web scraping API.

It is also at that time that Kevin and Pierre decide to split the role in the company. Kevin is now in charge of our whole marketing, and Pierre handles the product and technical side of the business.

MAR 2021

Content is king. πŸ‘‘

We reach a significant milestone, 1,000,000 pageviews on our website, most of it being organic.

It looks like betting on content was the right thing to do.

JUN 2021

First hire. πŸ“

Etienne joins the team full-time to help us with our growing development needs.

Etienne is a talented developer who worked in various industries before joining us.

In a short amount of time, he's able to release two beloved functionality of the API, the data extraction and the JavaScript scenario.

NOV 2021

$1 million. πŸ’°

In November, 6 years after our first product and 2,5 years after launching ScrapingBee, we finally reach the million in Annual Recurring Revenue.


The story is not over

JAN 2022

Redesign.

After 6 months of development, we released a complete redesign of our website in January, with a brand new logo, visual identity, documentation, and blog.

It hasn't been an easy road, and this wouldn't have been possible without all the support we got along the way.

Image description

THANK YOU!

Thank you, friends, family, colleagues, former colleagues, LP, TinySeed tutors, mastermind Zoomers, customers, Twitter supporters, ProductHunt upvoters and blog readers.

Happy to answer any questions you might have.

Pierre de Wulf 🐝

. . . . . . . . . . . . . . . . . . . . . . . . . . .