I spent the last few weeks publishing Actors on the Apify Store and digging through their API data. What I found was brutal — and instructive.
Here's everything I wish someone had told me before I published my first Actor.
The Power Law Is Merciless
The Apify Store follows a textbook power law distribution. The top 20 Actors have between 45,000 and 324,000 users. The Google Maps Scraper alone has 297K. Instagram Scraper sits at 191K. TikTok Scraper: 146K.
Then there's everyone else. Most published Actors have somewhere between 0 and 5 users.
That's not a typo. Zero to five.
If you publish an Actor and wait for organic traffic, you'll be waiting forever. The Store's discovery algorithm heavily favors established Actors with high usage counts, creating a flywheel effect that makes the top spots nearly impossible to crack head-on.
Why Your Actor Is Invisible
After analyzing dozens of successful and failed Actors, I found three consistent reasons most get zero traction:
1. You're Losing the Search Game
The Apify Store has its own internal search, and it weights seoTitle and seoDescription fields far more than most developers realize. A lot of builders spend hours crafting a beautiful README but leave the SEO fields as an afterthought — or worse, auto-generated.
Your seoTitle should read like a Google search result, not a GitHub repo name. "Web Scraper for Bluesky Posts and Profiles" beats "bluesky-scraper-v2" every time. The seoDescription should be a tight 150-character pitch that includes the exact terms your potential users would search for.
2. Your Pricing Is Wrong
This one surprised me. I assumed free Actors would get more users and eventually convert. The data says otherwise.
75% of the top 20 Actors use PAY_PER_EVENT pricing, typically charging $0.002–$0.005 per result. That's fractions of a cent per scraped item. Users don't blink at this.
Free Actors earn nothing (obviously), but they also signal "hobby project" to potential users. The Apify Store gives you 80% revenue share — one of the most generous marketplace splits anywhere. If you're not charging, you're leaving money on the table and undermining trust.
The sweet spot: charge per event (per scraped result, per search, per profile). Start at $0.005. You can always adjust. But starting at $0 is almost impossible to recover from because you'll attract the wrong user base.
3. Silent Input Field Failures
This is the sneakiest killer. Your Actor works perfectly in development. You publish it. Someone tries it. It fails silently because:
- Your input schema has a required field that isn't obvious
- The default values don't produce a working run
- A field expects a specific format (full URL vs. username) but doesn't validate or document it
I've seen Actors where the default configuration produces an error on first run. That's an instant uninstall. Your Actor's default inputs should produce a successful, useful result with zero configuration. Test the "click Run with defaults" flow obsessively.
The Niche Strategy That Actually Works
Competing with Clockworks' TikTok Scraper (146K users) is suicide. They have years of momentum, a mature codebase, and the flywheel effect working for them.
But here's what I found digging through the data: there are platforms where the top Actor has fewer than 500 users. These are winnable markets.
Example: Bluesky. The leading Bluesky scraper has roughly 240 users. That's it. Bluesky has 30M+ registered users, the AT Protocol is completely open (no authentication needed for public data), and the scraping competition is almost nonexistent.
Look for this pattern:
- Growing platform (Bluesky, Threads, Mastodon, Lemmy)
- Open API or protocol (reduces your maintenance burden)
- Weak incumbent (top Actor has <500 users)
- Clear use cases (brand monitoring, research, content migration)
Build for platforms that are growing but underserved. By the time the big players notice, you'll have the usage numbers and reviews that feed the flywheel.
The Proxy Problem (And How to Actually Solve It)
If you're scraping anything behind Cloudflare or rate-limiting, you'll hit anti-bot walls fast. Apify's built-in proxy is solid for basic work, but for heavy-duty scraping across major platforms, you'll want a dedicated proxy API.
I've been using ScraperAPI for the requests that need JavaScript rendering and CAPTCHA handling. It handles the rotation and browser fingerprinting so your Actor code stays clean. The alternative — managing your own proxy pool and dealing with residential IP rotation — is a full-time job that has nothing to do with building a good scraper.
Whatever proxy solution you choose, make sure your Actor handles proxy failures gracefully. A retry with exponential backoff and a clear error message beats a silent crash every time.
The Launch Checklist
Before you hit "Publish," run through this:
- [ ] Default inputs produce a successful run — click "Run" with zero changes
- [ ] seoTitle reads like a search result — include the platform name and what it does
- [ ] seoDescription is under 160 chars — tight, keyword-rich
- [ ] PAY_PER_EVENT pricing is configured — $0.003–$0.005 per result
- [ ] README has a "Quick Start" section — first 3 lines explain what this does and who it's for
- [ ] Input schema has descriptions and examples — every field
- [ ] Error messages are human-readable — "Invalid URL format, expected https://bsky.app/profile/..." not "TypeError: undefined"
- [ ] You've tested on a fresh Apify account — not just your dev environment
The Honest Truth
Most Actors fail because their builders treat the Store like GitHub — publish and forget. But the Store is a marketplace. It rewards Actors that are discoverable, reliable, and priced to signal value.
The good news: the bar is low. Most of your competition hasn't done any of this. A well-positioned Actor in an underserved niche, with clean defaults, proper SEO fields, and sensible per-event pricing, will outperform 99% of what's currently published.
The Store has 130K+ active users paying for scrapers every month. The demand is there. The question is whether your Actor is findable when they search for it.
Stop building for GitHub stars. Start building for the search bar.
Top comments (0)