DEV Community

Devil Scrapes profile picture

Devil Scrapes

View all public scrapers @ https://apify.com/devilscrapes

Joined Joined on 
We doubled the memory, cut runtime 33%, and raised the cost 41%

We doubled the memory, cut runtime 33%, and raised the cost 41%

Comments
3 min read
We swept 288 scrapers for columns that are empty in every row. 35 had one.

We swept 288 scrapers for columns that are empty in every row. 35 had one.

Comments
4 min read
A note said the run scraped 0 rows. The platform's own record said 6.

A note said the run scraped 0 rows. The platform's own record said 6.

Comments
4 min read
Our scraper returned 50 rows and 39 distinct IDs — count identities, not rows

Our scraper returned 50 rows and 39 distinct IDs — count identities, not rows

Comments
4 min read
Our QA run passed with rows in the dataset and still proved nothing about pagination

Our QA run passed with rows in the dataset and still proved nothing about pagination

Comments
4 min read
Our Actor got 403'd on every page and still reported SUCCEEDED with zero rows

Our Actor got 403'd on every page and still reported SUCCEEDED with zero rows

Comments
4 min read
A CONNECT 407 looked like a proxy-entitlement problem. It was a country pin with no group name.

A CONNECT 407 looked like a proxy-entitlement problem. It was a country pin with no group name.

Comments
4 min read
Bing's ad-library search box accepts any query and returns the exact same ads

Bing's ad-library search box accepts any query and returns the exact same ads

Comments
4 min read
44 rows of Apple's 'Icon + Asset Ad' format, and not one had an asset. Bug or null?

44 rows of Apple's 'Icon + Asset Ad' format, and not one had an asset. Bug or null?

Comments
4 min read
We queried Wallapop for zzznonsensequery9999xyz. Zero results is what proved the search actually works.

We queried Wallapop for zzznonsensequery9999xyz. Zero results is what proved the search actually works.

Comments
4 min read
pump.fun's search parameter accepts any string and returns the same feed. We shipped without it.

pump.fun's search parameter accepts any string and returns the same feed. We shipped without it.

Comments
5 min read
OLX Brazil embeds a decoy listings array with the exact shape of the real one. We had to prove which was which.

OLX Brazil embeds a decoy listings array with the exact shape of the real one. We had to prove which was which.

Comments
5 min read
We doubled Mercado Libre's scraper memory and clearance went from 50% to 90% - with zero code changes.

We doubled Mercado Libre's scraper memory and clearance went from 50% to 90% - with zero code changes.

Comments
6 min read
Kleinanzeigen has two page-2 URLs. One is a redirect trap. We verified the one we shipped actually advances.

Kleinanzeigen has two page-2 URLs. One is a redirect trap. We verified the one we shipped actually advances.

Comments
6 min read
We shelved a finished scraper because the site ignored its own search box. Now we test for it first.

We shelved a finished scraper because the site ignored its own search box. Now we test for it first.

Comments
5 min read
FurnishedFinder Scraper: caps every search at 50, and the fix isn't in the docs

FurnishedFinder Scraper: caps every search at 50, and the fix isn't in the docs

Comments
5 min read
Our QA harness certified this Actor at 4096 MB. It ships on 512.

Our QA harness certified this Actor at 4096 MB. It ships on 512.

Comments
3 min read
A run delivered 0 rows and still got billed $0.30 — the bug was ours, not Bayut's

A run delivered 0 rows and still got billed $0.30 — the bug was ours, not Bayut's

Comments
3 min read
The TikTok 'block' that was actually Camoufox running out of memory

The TikTok 'block' that was actually Camoufox running out of memory

Comments
3 min read
A datacenter IP gets 0 listings; a residential one gets 12. Same build.

A datacenter IP gets 0 listings; a residential one gets 12. Same build.

Comments 1
3 min read
Our scraper went 0-for-19 against Cloudflare. One boolean took it to 9-for-10.

Our scraper went 0-for-19 against Cloudflare. One boolean took it to 9-for-10.

Comments
5 min read
We cleared PeoplePerHour 4/4 locally. The first cloud run got HTTP 202 from every URL.

We cleared PeoplePerHour 4/4 locally. The first cloud run got HTTP 202 from every URL.

Comments
4 min read
A Dockerfile typo turned 33 real Depop rows into a silent, SUCCEEDED zero

A Dockerfile typo turned 33 real Depop rows into a silent, SUCCEEDED zero

Comments
4 min read
An isinstance(str) check that was always False capped every Facebook Page at exactly 3 posts

An isinstance(str) check that was always False capped every Facebook Page at exactly 3 posts

Comments
4 min read
Alibaba renamed one JavaScript variable and our price field silently dropped to 0%

Alibaba renamed one JavaScript variable and our price field silently dropped to 0%

Comments
5 min read
A 586 KB HTTP 200 from YouTube that contains zero videos

A 586 KB HTTP 200 from YouTube that contains zero videos

Comments
4 min read
Our test asked for 4 branches, ran 1, and reported PASS

Our test asked for 4 branches, ran 1, and reported PASS

Comments
4 min read
LinkedIn has an /api/ endpoint that needs no login and returns HTML

LinkedIn has an /api/ endpoint that needs no login and returns HTML

Comments
3 min read
Our release gate read a docstring and blocked the deploy over a word

Our release gate read a docstring and blocked the deploy over a word

Comments
4 min read
No introspection, no allowlist: reconstructing Whatnot's GraphQL queries from a compiled AST

No introspection, no allowlist: reconstructing Whatnot's GraphQL queries from a compiled AST

Comments
4 min read
Zero results, five rows: the Flippa search response that lies about matching nothing

Zero results, five rows: the Flippa search response that lies about matching nothing

Comments
4 min read
A 200 that isn't reachability: SpareRoom's soft-redirect and the empty run nobody notices

A 200 that isn't reachability: SpareRoom's soft-redirect and the empty run nobody notices

Comments
5 min read
A 404 is not a failure: what Discord's invite endpoint taught us about billing

A 404 is not a failure: what Discord's invite endpoint taught us about billing

5
Comments
5 min read
A 25%-failing test is not flaky. It's a bug reporting itself honestly.

A 25%-failing test is not flaky. It's a bug reporting itself honestly.

5
Comments
4 min read
A bare useApifyProxy: true resolves to datacenter. Patreon 403s every one of those.

A bare useApifyProxy: true resolves to datacenter. Patreon 403s every one of those.

Comments
4 min read
grep '"aggregate_rating":' finds zero matches on Zomato. The field is there, just double-escaped.

grep '"aggregate_rating":' finds zero matches on Zomato. The field is there, just double-escaped.

Comments
4 min read
?q=chairs on Chairish isn't a search - it's a redirect to a category page wearing a search URL.

?q=chairs on Chairish isn't a search - it's a redirect to a category page wearing a search URL.

Comments
5 min read
?q=chairs on Chairish isn't a search - it's a redirect to a category page wearing a search URL.

?q=chairs on Chairish isn't a search - it's a redirect to a category page wearing a search URL.

Comments
5 min read
?page=2 on Immowelt returns page 1, byte for byte. It's a button, not a route.

?page=2 on Immowelt returns page 1, byte for byte. It's a button, not a route.

Comments
5 min read
window.__NUXT__ is not JSON. It's a function you have to run first.

window.__NUXT__ is not JSON. It's a function you have to run first.

Comments
4 min read
Our build wave shipped four scrapers that scraped nothing

Our build wave shipped four scrapers that scraped nothing

Comments
4 min read
A one-step probe told us YouTube was blocked. It was asking the wrong endpoint.

A one-step probe told us YouTube was blocked. It was asking the wrong endpoint.

Comments
4 min read
The top-earning product on Indie Hackers reports $10,000,000,000,000,000 a month

The top-earning product on Indie Hackers reports $10,000,000,000,000,000 a month

Comments
3 min read
Grailed's __NEXT_DATA__ is empty. The listings come from Algolia, and the key is on the page.

Grailed's __NEXT_DATA__ is empty. The listings come from Algolia, and the key is on the page.

Comments
3 min read
Coursera ships two big JSON blobs on every search page. Neither has the results.

Coursera ships two big JSON blobs on every search page. Neither has the results.

Comments
4 min read
dict.get(key, [None])[0] is not safe, and our green test suite agreed with us

dict.get(key, [None])[0] is not safe, and our green test suite agreed with us

Comments
4 min read
Pinterest's ad library endpoint was hiding behind one missing curl flag

Pinterest's ad library endpoint was hiding behind one missing curl flag

Comments
4 min read
Google News RSS has no cursor, so the query IS the cursor

Google News RSS has no cursor, so the query IS the cursor

Comments
4 min read
Trustpilot needs a browser exactly once — the WAF token replays onto curl

Trustpilot needs a browser exactly once — the WAF token replays onto curl

Comments
4 min read
Meta's Ad Library 403 is 481 bytes of instructions, not a block

Meta's Ad Library 403 is 481 bytes of instructions, not a block

Comments
4 min read
Indeed 403s Chrome on every proxy tier — and our laptop said it was fine

Indeed 403s Chrome on every proxy tier — and our laptop said it was fine

Comments
4 min read
LinkedIn Ad Library Caps at 24 Ads — Here's the Real Pagination Endpoint

LinkedIn Ad Library Caps at 24 Ads — Here's the Real Pagination Endpoint

Comments
7 min read
Fiverr Gig Scraper: One Listing, Two Rows, Only One Says Sponsored

Fiverr Gig Scraper: One Listing, Two Rows, Only One Says Sponsored

Comments
5 min read
Why 43% of Yahoo Finance's 1-Minute Candles Come Back Null

Why 43% of Yahoo Finance's 1-Minute Candles Come Back Null

Comments
5 min read
CoinMarketCap's lastUpdated Lies About Your EUR Price

CoinMarketCap's lastUpdated Lies About Your EUR Price

Comments
5 min read
Binance's api.binance.com Blocks Every US IP — Its Own Data Mirror Doesn't

Binance's api.binance.com Blocks Every US IP — Its Own Data Mirror Doesn't

Comments
5 min read
The Invisible Character Hiding In We Work Remotely's Job Descriptions

The Invisible Character Hiding In We Work Remotely's Job Descriptions

Comments
3 min read
Two Thirds Of Stocktwits Messages Have No Sentiment — And The API Says So Explicitly

Two Thirds Of Stocktwits Messages Have No Sentiment — And The API Says So Explicitly

Comments
3 min read
Remotive's Salary Field Mixes Two Different Comma Conventions

Remotive's Salary Field Mixes Two Different Comma Conventions

Comments
3 min read
Mastodon's acct Field Hides the Domain You Already Know

Mastodon's acct Field Hides the Domain You Already Know

Comments
3 min read
loading...