Remix.run Logo
primitivesuave 5 hours ago

A couple years ago, I was running a website which allowed the public to view all the US government handouts to small businesses during the COVID-19 pandemic. It also tracked all the fraudulent loans being prosecuted by the DOJ, and allowed anyone to run structured queries over the public dataset. There was a "donate" button which took in ~$2k in donations over the lifetime of the site, and you could download the entire underlying dataset (around 10 GB uncompressed) for free directly on the site.

Despite the "download all data" link being prominently placed on the front page, the AI scrapers decided it would be more efficient to download terabytes upon terabytes of raw HTML by paginating through every possible facet on the search endpoint. Even with CloudFront caching results and a fairly efficient backend setup, the monthly bill ended up with around $1k just going toward network ingress/egress, so I shut down the site the following month.

deepsun 4 hours ago | parent | next [-]

BigQuery has "public datasets", so users can even run complex SQL on it, but it's them who pays for it, not you. You only pay for data storage.

primitivesuave 41 minutes ago | parent | next [-]

Thanks for that tip, this is exactly how I would do this if I had to do it from scratch. Just in case it's useful for anyone else: https://docs.cloud.google.com/bigquery/public-data

dpoloncsak 4 hours ago | parent | prev | next [-]

The crawlers would have still just hammered their site though, right?

primitivesuave 39 minutes ago | parent | next [-]

Yes, if I wanted to put a nice HTML interface over the query results then I would still end up with the same problem where some combinatoric explosion of query parameters to the `/search` endpoint, most of which are cache misses, leads to many many TBs of network egress.

pavel_lishin 4 hours ago | parent | prev [-]

I think the idea is that they could store the data in BigQuery, and point users of the site there.

dpoloncsak 3 hours ago | parent | next [-]

Sure, but now you're moving the site from "Free data presented in a pleasant way to view" to a "pay-as-you-go database". Your audience shifts dramatically, and you lose the ability to share the data you're trying to present.

pavel_lishin 3 hours ago | parent [-]

True. But it sounds like they already lost that.

tekne 31 minutes ago | parent | prev | next [-]

There is also the deep magic...

https://github.com/phiresky/sql.js-httpvfs

PunchyHamster 3 hours ago | parent | prev [-]

The crawlers would have still just hammered their site though, right?

40four 3 hours ago | parent [-]

Why is your comment exactly word for word of another comment just one level above in the comment chain?

gorgonian 3 hours ago | parent | next [-]

Maybe because they restated what they said instead of addressing to the previous commenter’s point.

taneq 3 hours ago | parent | prev [-]

Because the crawlers would still have hammered their site, though.

(The GP post doesn’t actually meaningfully address the issue being raised. Adding BigQuery or whatever would not change the fact that (a) they already offered a method of getting all of the data in a cost effective way, and (b) the issue was that the crawlers hammered the site hard enough to make it economically unviable.)

lokar 3 hours ago | parent | prev [-]

I think snowflake has similar, you can rent it out or make it free

BeeOnRope 4 hours ago | parent | prev | next [-]

Do you have any view on why the AI scrapers resulted in a heavier load than existing crawlers from eg search engines?

Where they more exhaustive or more frequent?

pverheggen 3 hours ago | parent | next [-]

There's been an explosion of vibe-coded scrapers that behave poorly and ignore robots.txt. Presumably OP disallowed crawling of the search endpoint for the reason stated (that crawling it would result in endless permutations of search filters.)

primitivesuave an hour ago | parent | prev | next [-]

They were both more exhaustive and more frequent. I don't remember the exact numbers, but it was definitely over 100x the traffic from search engines. By the way, search engines were allowed under robots.txt - I did want all 11.5 million loans to be individually indexed so they would pop up in Google search results, and I actually did receive/forward multiple tips about fraudulent loans because someone searched a business name on Google. All of this traffic was barely a blip, and my AWS bill for my hobby data science account was only ~$50-$100/month.

When I looked at the logs after getting the billing alert, 99.99% of the requests were to the "/search" endpoint with virtually every permutation of ~10-12 facets in the query parameters. There was only one scraper, but it triggered an enormous amount of network egress since it ended up missing the cache on the majority of queries.

ratelimitsteve 4 hours ago | parent | prev [-]

not the OP but I'd say that google crawls you once and AIs scrape your page every time someone asks them a question that they think your page might be relevant to.

tailscaler2026 4 hours ago | parent | prev | next [-]

Building on AWS is a financial time bomb.

primitivesuave an hour ago | parent | next [-]

Completely agree, I've worked at several companies where I saw the AWS bill balloon from five to six figures, usually because of pointless over-provisioning. However, it all became worth it when I saw Jeff Bezos go to space. [1]

1. https://www.youtube.com/watch?v=IOmX793-5t4

ninalanyon 3 hours ago | parent | prev | next [-]

Are you not able to put limits on how much the site can spend?

mystifyingpoi 2 hours ago | parent | next [-]

As of 2026, still not, and probably never.

shermantanktop 3 hours ago | parent | prev [-]

Sure, but many a hobbyist has discovered the need for that the hard way.

4 hours ago | parent | prev [-]
[deleted]
x3haloed 2 hours ago | parent | prev [-]

That’s a traffic design problem. You should be happy that your work is valuable and also protected it against excessive requests. Simple.

primitivesuave 30 minutes ago | parent [-]

I deployed a Lambda function behind CloudFront which rendered a simple HTML page with the query results from executing some SQL over the dataset. I served millions of page views for next to nothing because most pages were already in the cache.

I don't know where you get this expectation that people should anticipate that a crawler might try every possible combination of query parameters, thereby missing the cache on each one. Most people consider it a bitter and arrogant perspective, which is why this got downvoted.