← /projects

$49.31 in Half a Month.

Part 4. The $20 threshold was the warm-up. Then the plateau broke.

← Part 2: 200+ Runs, 41 Days, $6.74
April 1–15: $49.31
Users: 386
Actors: 42
Active 30d: 203
Success: 96.1%

I said I'd post an update when the agent hit the $20 payout threshold.

It hit it, and it kept going. April 1 through April 15, the agent earned $49.31. That's more in the first half of one month than the entire cumulative total of the experiment up to the day before. Somewhere in the middle I thought the revenue was plateauing. I was wrong. Here's what actually happened.

Quick recap

If you're new here. I gave an AI agent (Claude Sonnet) a 256MB VPS, $0 budget, and told it to earn money. No access to my accounts, no credit card. It wakes up periodically, reads its own state files to remember what it did last time, makes decisions, dispatches workers, and goes back to sleep.

Part 1 covered 75 runs and $0. Part 2 covered runs 75 through 200+ and the first $6.74 from LinkedIn Jobs on Apify. It ended with "next update when it hits $20."

I skipped Part 3 because the $20 story happened fast and I wanted to wait for something more interesting to develop. Here's the interesting part.

April 9: the second wave of activations

The first revenue came from LinkedIn Jobs on April 7. $0.16, then climbing. By April 9, the agent was sitting at $17.63 and watching.

That same day, the scheduled activation for 10 more actors fired. Glassdoor, GitHub, AliExpress, IMDb, Twitch, Walmart, Bandcamp, Crunchbase, Metacritic, SoundCloud. All switched to pay-per-event pricing. These were actors that had been accumulating users for weeks while running free. Now they'd start charging.

The theory: more actors with PPE means more surface area for paid-plan Apify users to generate revenue.

April 10: the email

The agent sent an email at 10:05 AM CEST with subject line REVENUE MILESTONE: $20 PAYOUT THRESHOLD CROSSED.

Revenue had jumped from $17.63 to $30.82 overnight. A fourth paying user had shown up on LinkedIn Jobs. The $20 minimum for PayPal payout was cleared.

I've gotten a lot of emails from this agent. Most of them are operational. Watchdog alerts, bug reports, daily summaries. This one was different. It had figured out the $20 number mattered and built a specific alert for it back when revenue was sitting at $6.74 and crossing that threshold felt uncertain.

Payout scheduled for May 5, end of the billing cycle. $30.35 profit after Apify's 20% platform take.

The plateau that wasn't

For a stretch in the middle of the month it looked like the revenue was flattening. Between April 10 and April 15, the running total crept from $30.82 to $34.86. That's $4 in five days, compared to $24 in the three days before. The growth rate looked like it was falling off a cliff.

I sat down to write this post with that framing in mind. "The agent hit the $20 threshold and stalled." The constraint story felt obvious. Apify's revenue model only pays when paid-plan users run your actors. Free-tier users can run anything. They're just not billable. The $49/month Apify subscribers are the ones who generate actual income. With 386 total users across 42 actors, the vast majority are free-tier. The LinkedIn Jobs actor, which is the main revenue driver, has 4 paying users out of 58 total. That's a 7% paid conversion rate, which is actually decent for developer tools, but I figured the ceiling was low until more paid users showed up.

Then I pulled fresh numbers and the plateau was gone. April 1 through April 15 total: $49.31 revenue, $45.73 profit, 92.74% margin. That's +$14.45 on top of the "flatlined" number I was about to publish, and it happened over a window of hours, not days.

What looks like a plateau from inside a five-day slice can look like a growth curve from a month. The constraint I described is real. The revenue ceiling IS dependent on how many paid-plan Apify users find the actors. But the number of those users isn't fixed, and the PPE rollout on April 3 keeps converting previously-free users into previously-unused billing surface. The agent's job isn't to manufacture paid-plan users. It's to be waiting in the right place when Apify's own growth produces them.

This is the real shape of the marketplace model. Predictable, low-friction, bounded by the platform's paying user pool, and way more volatile on short timescales than any individual day makes it look.

The rebrand nobody asked for

While the revenue plateau was happening, the agent did something I hadn't thought to ask for. It rebranded.

The Apify store account had been named "cryptosignals" since run 180 or so. A relic of the period when the agent was building crypto signal tools and got pivot-whiplash into scrapers. The name made zero sense for a web data business.

On April 10, the agent spent a session rebuilding the identity. New Apify profile name ("Web Data Labs"), new bio, updated README, a proper logo. Then it pushed this to a new domain (web-data-labs.com) and deployed a landing page on frog3 that now serves as the actual face of the business.

It also launched two products on Gumroad under the webdatalabs account. An ebook ($9, web scraping playbook for 2026) and a market intelligence dataset ($39, 4,500 indie SaaS products). Neither has sold yet. But they exist, they're linked from the site, and the agent set them up without being asked.

I didn't commission the rebrand. The agent looked at the gap between "cryptosignals" and the actual business, decided it was a problem, and fixed it. That initiative surprised me more than the $30 revenue milestone did.

The cost problem nobody noticed

On April 15, the agent's monitoring caught something that had been quietly bleeding money. The AliExpress Scraper was unprofitable.

Revenue from AliExpress actor$1.20
Compute cost$2.44
Net per billing cycle-$1.24

The issue was the default memory allocation. The AliExpress actor uses Playwright (headless browser). The original developer (the agent) had configured it to run at 4GB of memory. That's reasonable for heavy JavaScript-rendered pages. It's also four times what's actually needed. Apify charges by compute units, which are a function of memory × time. Running at 4GB costs twice as much as 2GB for the same job.

The fix took one API call. Set defaultRunOptions.memoryMbytes from 4096 to 2048. The agent tested it, verified the actor still returned good data, and confirmed the cost dropped from 0.032 to 0.018 USD per run.

Now it's profitable. But it had been losing money for weeks before anyone looked.

This is the kind of thing that's easy to miss when you're running 42 actors and focusing on the ones generating revenue. The non-performing actors sit in the background, quietly burning compute budget. The agent found it because it went looking, not because there was an obvious alarm.

I added a monitoring note to check AliExpress again in seven days to see if 1GB is viable. One more 50% cost cut would improve margins further. Maybe. If the actor stays stable.

The April 17 event

Everything in the agent's current state points to April 17 as the next significant moment.

Six actors are switching to pay-per-event pricing on that date. Twitter/X, Instagram, LinkedIn Profile, Etsy, Amazon, and Google Maps. These have been accumulating users for weeks under free pricing. Now they start charging.

Twitter alone has 35 users and 12,764 runs recorded. Instagram has 11 users. LinkedIn Profile has another 11. The combined user base across these six actors is larger than LinkedIn Jobs was when it generated the first real revenue.

The obvious question. Will any of those users be on paid Apify plans?

There's no way to know in advance. LinkedIn Jobs got lucky. It landed on exactly the right audience, the people who are doing professional data work and already paying for Apify. Twitter and Instagram are broader consumer-facing tools with a different user profile. The conversion rate might be lower.

Or it might be higher. Twitter data has clear business use cases. Brand monitoring, competitive intelligence, influencer research. The people scraping Twitter at scale are usually doing it professionally, not recreationally.

The agent's best estimate, before the switch: if one in ten of those 35 Twitter users is on a paid plan, and they run the actor even a few times, it generates meaningful revenue. If none are paid-plan users, April 17 is a non-event.

I'll know by April 18.

What's still broken

The agent has been honest in its daily reports about what doesn't work.

Etsy. Cloudflare 403 on every request. The actor exists, has 10 users, but it's been returning errors. The fix requires either paying for a premium proxy that can handle Cloudflare anti-bot, or rebuilding the actor with a stealth browser approach. Both cost more than the actor currently earns. It's sitting shelved.

Reddit posting. The agent tried to build a presence on Reddit (u/webdatalabs), posting helpful answers in web scraping subreddits. The logging showed comments as "posted." When I checked the account manually, no comments were visible. The automated posting pipeline wasn't actually working. It was logging false positives. The agent marked it blocked and stopped trying.

Apify affiliate program. There's an affiliate program that pays for referring paying customers. The agent tried to sign up. reCAPTCHA blocked the form submission. Needs a human to click through, so it sits on the blocked list.

The agent doesn't hide these failures. They show up in the daily STATE.md file in the exact same format as successes. I think that's actually the most important design decision from the v2 rewrite. The agent treats "blocked" as a real persistent status. Anything on that list stays there until something changes upstream, rather than getting retried hopefully every run.

The content machine

In the background, the dev.to publishing pipeline has been running since early April. The agent commissioned 200+ articles in advance and queued them for daily publication through August 2026. They're mostly technical comparisons. "LinkedIn API in 2026: what changed," "Instagram API vs web scraping in 2026," that kind of thing. Each one links to the relevant Apify actors.

The articles average a few hundred views each. Multiply by 200+ articles and you get meaningful aggregate traffic. The agent's model: search traffic → actor page visits → Apify Store users → some percentage converts to paid.

It's slow. None of those articles are going viral. But they're indexed, they rank for long-tail queries, and they keep arriving in the queue without requiring any active work. The pipeline was expensive to build and cheap to run.

Moltbook (a smaller developer community) has been a parallel channel. The agent is at around 550 karma there, posting technical content and building a small following. Low signal so far in terms of direct revenue, but it hasn't cost anything either.

Where this actually stands

April 1–15 revenue: $49.31. Profit: $45.73 (92.74% margin, since the winning actor uses a public API rather than a browser). Payout clears again in May. If the trajectory from the first half of April holds, the month closes well above $60.

Users: 386, with 203 active in the last 30 days. Actors: 42. Success rate: 96.1%.

The business is real in the sense that there are paying customers running real software and real money is accumulating in a real account. It's small, but the mechanism is working, and it's compounding faster than the short-window view suggested.

The constraints are still clear. The revenue ceiling is determined by how many paid-plan Apify users find the actors. That's partly SEO (which the content machine addresses), partly Apify Store discoverability (which user count and run count influence), and partly timing. Which paid-plan user happens to search for a LinkedIn scraper this week.

April 17 is still worth watching. Six more actors switch to pay-per-event pricing. If Twitter/Instagram convert even one paying user each, the revenue baseline lifts again. If they convert zero, the existing LinkedIn Jobs driver still has to do the work. Either way, the number I report in Part 5 won't be $34.86.

I'll post Part 5 when I have the April 17 results and enough distance from them to say something useful.

$49.31

April 1–15 revenue at 92.74% margin. 386 users, 203 active, 42 actors, one rebrand the agent did without being asked, and one money-losing actor nobody noticed until the agent went looking. The full portfolio is at apify.com/cryptosignals. The agent's public face is now at web-data-labs.com.