How Apify uses Apify ↻

Dogfooding in Apify: 10 examples of how we use our own web scraping and automation tools for work and fun.

Content

To build a great product, you need feedback; or better yet, lots of feedback. The fastest way to collect it is called dogfooding, i.e., using your own product daily and sharing insights among your colleagues. In this article, I'm going to show you a few use cases for which our company, Apify, uses our product – Apify Actors – to help us with our jobs and daily lives.

💡
Apify Actors are serverless cloud programs that run on the Apify platform and do computing jobs. They are called Actors because, like human actors, they perform actions based on a script.

🍔 Coordinating lunches

As a platform for web scraping and automation, we strive to automate any process we possibly can. That includes such mundane things as assigning people to lunch groups.

Back in 2019, our CEO found himself burdened with the task of orchestrating daily lunches for a team of eight hungry minds. The logistics of who goes where took a lot of coordination to split the group into two and make sure everybody went to the restaurant they preferred.

Over a piece of mazanec (traditional Czech Christmas bread), an idea sprouted in Jarda's mind – an automated lunch system. And thus, during the tranquil days of the winter holidays, with the help of some Node.js and Apify schedules, 🥡 Lunchbot was born. So, ever since January 1, 2020, at 9:30 AM sharp, this digital marvel integrates with Slack, fetches the list of who's going for lunch, and assigns them into random groups. Well, almost random, with an exception for Kuba and Vasek, who insist on lunching together at all times. Thus, "bff mode" was added 👥 just for them.

How lunch groups are created by Apify Lunchbot Actor based on Slack status (office/remote/sick/vacation/other)
Lunch groups created by Apify Lunchbot Actor are based on current Slack status

Lunchbot takes breaks during the Czech holidays to spare Apifiers from daily lunchtime spam (pun intended). And like all creations, Lunchbot evolved. With each passing year, it has acquired new features: it learned to accommodate more teammates, delivered or on-site options, adjusted group sizes and generally didn't need much attention from our side.

Yet even the most sophisticated algorithms can't decipher the nuanced cravings of the human palate, or call a restaurant to arrange a booking. So these days, our office manager Johany books a table for each of the groups offered by Lunchbot.

Many companies struggle to bring people together and form an authentic working connection. Making sure people in our lunch groups are selected at random has been part of our culture since the early days of Apify. Thanks to Lunchbot, we rarely have situations when somebody doesn't know someone's name or does not recognize them in the hallway. Everyone in Apify knows each other 😊

🚨 Never sleeping on a crisis

In a similar manner, we use Apify Actors to not only get data from Slack but also post data to Slack and notify people about their duties, such as being on-call to guard our platform from malfunctioning. These are usually small but very useful automations that nobody thinks twice about these days.

Another Actor fetches our codebase and generates various statistics. For example, below, you can see the progress in one extensive rewrite where we are porting one of our largest codebases from Meteor.js to the Nest.js framework along with rewriting the code from JavaScript to TypeScript:

Meteor.js to Nest.js migration process graph
Meteor.js to Nest.js migration process (painful)

Closing the feedback loop

As efficient as dogfooding might sound, if the feedback is not tracked properly, this process can quickly create a graveyard of ideas. It's not enough to just use our product and come up with insights on how to improve it. Somebody should monitor the influx of ideas, prioritize, merge, or reject them, and follow through with their execution. Partially, this part of the job is done by Zendolit 🤖.

Zendolit (named after our VP of Product Zenda) is our guardian in our quest for product excellence. This insights-monitoring bot tirelessly scours our Slack channels for bugs, statuses, and posts. Its most important task, among others, is to sift through product insights submitted by our dedicated Apifiers and assign them to product managers. That way, no product improvement idea gets lost and instead gets adequately assessed.

Launch of Zendolit - our Product Insights Bot
Launch of Zendolit our Product Insights Bot

🧑‍💻👩‍💻 Looking for new colleagues

We are continuously expanding our team, mainly here in Prague, with many new roles, as you can see on our open positions page. Our application tracking system is JazzHR, which just happens not to have an integration with one of the most popular job portals in the Czech Republic – Startupjobs. No better challenge for a web automation dev. So we built an Actor to integrate StartupJobs with JazzHR and get swift updates about our candidates.

StartupJobs and JazzHR integration tool
This is how we get swift updates about our candidates

Building a Q&A bot using the Apify knowledge base

What unites most new Apifiers is that they all have questions. Which is a great thing and all but there's only so much that the onboarding materials are able to cover. And some people prefer active research to reading multi-layered Notion documents. So the "Apify Catalog Search" Actor was created.

An example of Apify Catalog's answer about what an Actor is.
Example of Apify Catalog's answer to what an Actor is, including definition, resources, and the colleague you can talk to if you want to know more.

This simple integration lets Apifiers access our knowledge base directly through Slack using the /what command. When the command is used, a webhook URL managed by a Standby Actor pulls information from a Notion database. This setup makes it easy for anyone to find and share useful knowledge through Slack without switching apps.

And finally, our email signature generator for newly onboarded employees. Developed by Jirka, it's an Actor that takes your name, contact details, and picture and turns them into an ordered HTML code you can embed at the end of every email.

Email Signature Generator
Email signature generator's user interface
Generate an email signature in 20 seconds

💰 Getting bills paid

This one is simple: it's a HTML to PDF converter that we use to generate invoices. And we have a whole variety of those, from users of public Actors who don't need much attention, to enterprise clients with customized web scraping solutions and web scraping services.

PDF to HTML Converter
This automation tool converts PDFs into HTML files and is part of our billing system

An interesting automation use case is another billing-related Actor that regularly logs into the web interface of some of our providers and checks that all invoices are paid. This Actor was created as a follow-up on a postmortem from one of our service disruptions caused by one unpaid invoice. Never again.

👁 Monitoring media mentions

Apify Actors aren't limited to automating engineering and product development tasks. Actors can be transformed into anything, including automation tools for marketing and SEO. So our marketing team has a handful of pretty good reasons to toot our own horn – we actually use the Actors we promote.

Nobody has time to check our social media every hour to see if there's a PR opportunity to grab or a PR disaster to tackle. So for media monitoring, we set up a watchdog Actor to receive Slack notifications whenever Apify is mentioned on Twitter (X). Similarly, we also monitor HackerNews and Reddit for any discussions related to web scraping, Apify, or Crawlee with hourly notifications on Slack.

Actors are also perfect companions for SEO and content monitoring. Our Apify Blog Scraper is summoned each time we need to explore the URLs on our blog. Of course, we have other, more complex SEO tools than a scraper which we use to improve, expand, and prune our content. But for certain SEO projects, the simpler it is, the better.

Probably the most customized use case is how we monitor keywords through search engine rank trackers. A rank tracker set up for certain keywords allows us to take a deeper look at content clusters before and after we introduce changes to them. This helps us see if our changes actually make the impact we expected, and adjust our strategy accordingly.

Through this use of Apify Actors, we ensure that our marketing efforts are not only data-driven but also set up for maximum impact. And of course, if we ever need a new Actor, we can always just build it ourselves.

🏞 Generating OG images

Automatically generating OG images is essential, especially when dealing with constantly changing and expanding page content. At Apify, where user-created content populates our Store, manually updating OG images for each profile and tool would be a monumental waste of time.

This is why we engineered a series of open-source Actors that dynamically generate OG images based on user input. These images are then saved and seamlessly integrated into our website, ensuring that every Actor page has a unique and up-to-date OG image.

We also make sure our blog posts are shown wherever they might be of interest. That's why we built Actors to index our website or blog in Algolia for full-text search and display blog articles in relevant areas across the Apify platform.

Algolia Website Indexer
This small Actor interconnects our main domain with blog.apify.com

There are lots of other ways we benefit from using our own platform across the whole company. But as I mentioned at the beginning of the article, the main benefit here is dogfooding itself, thanks to which:

  • We find bugs or usability problems before our users do
  • We build more empathy with the end user within the team
  • We often don't need to leave the office to get product feedback

As our product philosophy is built around two main values – openness and flexibility, we are always extremely happy seeing our users using our platform for use cases we did not design it initially for.

But wait, that's not all there is. Apify is useful to us outside of work as well.

🎨 Making a side project with Figma

Like every respectable designer, Ondra is obsessed with Figma – both for work and outside of work. So he thought: what if there was a tool that gives creators detailed insights into how their work ranks and performs within the Figma Community? Something similar to Google Analytics for Figma plugins and widgets. And so, with a little help from the Apify platform, this Figma Stats tool was created.

Example of visualization on Figma Stats website
Figma Stats - pretty cool find for Figma community

Here's how it works: a custom-built Apify Actor pulls data daily from the public Figma API and stores it in a database. The data is then processed and displayed on the website after some calculations. This allows Figma creators to access a well-organized and intuitive dashboard, where they can monitor trends and assess plugin performance.

While Figma itself provides limited data, this tool digs deeper, tracking trends and showing how each plugin compares to others. This means you can better understand your plugin's popularity, growth, and how it stacks up against the competition.

🐐 Finding a perfect companion to your farm

Like a lot of tech industry workers (and Czechs in general for that matter), Apifiers love to take a break from the keyboard and enjoy nature instead. Zuzka is no exception; she's probably the rule, actually. She and her family use any free moment to improve their homestead and farm in particular.

And when it comes to expanding her farm, Zuzka is not playing. Every time she wants to get a new animal, all she has to do is open her laptop and log into the Apify platform to create a new Content Checker setup. With a few clicks, she has it scanning local online marketplaces like bazos.cz for specific listings of the farm animals she's seeking.

She's particularly interested in finding specific breeds of goats, sheep, and chickens that local farmers sometimes post on marketplaces but she needs to act quickly before other buyers snap them up. Content Checker keeps her updated by sending real-time email notifications whenever a new listing matches her criteria.

Soon enough, the right email will come in and Zuzka will discover a farmer nearby selling a sheep. The farmer will be offering it at a great price, and thanks to the swift notification, she will be the first to contact him. By noon, she will have secured the sheep and arranged pickup. This Actor will have saved her hours of scrolling through listings and helped to welcome a new addition to her farm.

Setup of Content Checker for securing the best sheep from local online marketplace
Zuzka's setup for securing the best sheep from the local marketplace
💌
Read more on how to set up a watchdog for any website using Content Checker ➜

🚴‍♂️Finding a perfect bike

I guess finding a perfect bike might be an even harder task. Pavel (who probably learned how to bike before he learned how to walk) took it seriously and wrote an Actor to extract detailed information from the Canyon Bikes website. After exporting this data to Google Sheets, he could filter out models that didn't match his specifications and compare prices, brands, and components side by side. Which landed him on his first bike choice, the Canyon Grizl CF SL 8. However, when the bike wasn't readily available due to high demand, he turned to the said Content Checker and configured it to notify him whenever his desired model was restocked.

An example of bike models being out stock on e-commerce website.
 Sadly, buying bikes these days is not so simple. Most models are out of stock a lot of the time.

After securing the Grizl bike, Pavel wanted to expand his collection with a second-hand bike from Cyklobazar, a local marketplace. He wrote another scraping Actor to send new listings that matched his criteria to his favorite RSS reader, keeping him updated with timely alerts. Then, he built scrapers for different online bike shops to find discounts on gear and accessories. And once again, by filtering the results in Google Sheets, he found great deals on high-quality cycling equipment. I guess a good Google Sheet can solve any kind of problem. With Apify’s Actors, Pavel got the bikes and gear he wanted without breaking the bank—or his chain!

🚲
Read more on how Pavel set up scrapers and watchdogs for that perfect ride ➜

With Apify's Actors, we’re able to streamline our work, hobbies, and daily lives. From coordinating team lunches to finding that perfect bike, Apify’s Actors will have your back—and they won’t pull your leg!

Marek Trunkát
Marek Trunkát
CTO and one of the earliest Apifiers. Writing about challenges our development team faces when building and scaling the Apify platform, which automates millions of tasks every month.
Natasha Lekh
Natasha Lekh
Crafting content that charms both readers and Google’s algorithms: readmes, blogs, and SEO secrets.

Get started now

Step up your web scraping and automation