Ready-to-run recipes for pulling clean, structured data from the web using Devil Scrapes Actors on the Apify Store.
Every Actor here is a self-contained scraper you call over the Apify API — no servers, no proxies to manage, no anti-blocking to babysit. We handle the browser fingerprints, retries, proxy rotation, and edge cases; you get JSON or CSV.
# The one pattern every recipe uses
from apify_client import ApifyClient
client = ApifyClient("YOUR_APIFY_API_TOKEN")
run = client.actor("DevilScrapes/<actor-slug>").call(run_input={...})
for row in client.dataset(run["defaultDatasetId"]).iterate_items():
print(row)Get a free Apify token at apify.com — every account starts with free monthly credit, no card required.
Pull live job postings straight from the ATS platforms that power most company career sites — one normalized schema across all of them.
| Recipe | Actor |
|---|---|
Workday career sites (*.myworkdayjobs.com) |
workday-jobs-scraper |
| SmartRecruiters employers | smartrecruiters-jobs-scraper |
| Workable boards | workable-jobs-scraper |
| Teamtailor career sites | teamtailor-jobs-scraper |
| Greenhouse + Lever + Ashby (one feed) | multi-ats-jobs-scraper |
| BambooHR careers sites | bamboohr-jobs-scraper |
| Recruitee boards | recruitee-jobs-scraper |
| Ashby boards (dedicated) | ashby-jobs-scraper |
| Personio careers pages | personio-jobs-scraper |
| Breezy HR boards | breezy-hr-jobs-scraper |
| Greenhouse boards (dedicated) | greenhouse-jobs-scraper |
| Lever boards (dedicated) | lever-jobs-scraper |
| RemoteOK remote-jobs feed | remoteok-jobs-scraper |
| Dice.com tech-job postings by keyword/skill | dice-tech-jobs-scraper |
→ Runnable example: recipes/jobs_across_ats.py
| Recipe | Actor |
|---|---|
| US healthcare providers (NPI registry) | npi-healthcare-provider-scraper |
| Shopify store leads from a domain list | shopify-store-leads-scraper |
| US building-permit contractor leads | us-building-permit-leads-scraper |
| BBB-rated local businesses (ratings, accreditation, complaints) | bbb-business-leads-scraper |
| Craigslist listings across many US metros + categories | craigslist-listings-scraper |
→ Runnable example: recipes/score_local_leads_by_bbb_trust.py
| Recipe | Actor |
|---|---|
| Mercari US sold/completed listings | mercari-sold-listings |
| Gumroad products & storefronts | gumroad-product-scraper |
| Goodreads books & reviews | goodreads-book-reviews-scraper |
| Vinted active listings (price/condition) | vinted-listings-scraper |
| Recipe | Actor |
|---|---|
| Telegram public channel post history | telegram-channel-scraper |
| Recipe | Actor |
|---|---|
| Lu.ma public events by city/category | luma-event-discovery |
| Meetup events by keyword + location | meetup-events-scraper |
| Every event from a Meetup group | meetup-group-scraper |
| Recipe | Actor |
|---|---|
| Booking.com hotel listings & reviews by destination | booking-hotels-scraper |
| VRBO vacation-rental listings by destination | vrbo-vacation-rentals-scraper |
| OpenTable restaurants, ratings & review snippets | opentable-restaurants-scraper |
| Recipe | Actor |
|---|---|
| Full Substack publication archives | substack-newsletter-scraper |
| Website tech stacks (BuiltWith alternative) | builtwith-alternative-scraper |
| Japan real estate (SUUMO) | suumo-japan-real-estate |
Every Devil Scrapes Actor ships the same defensive stack so your runs finish with data, not empty datasets:
- Browser TLS/H2 impersonation — requests present a real Chrome/Firefox/Safari handshake, not a Python HTTP client.
- Proxy session rotation — a fresh residential exit IP on every block.
- Exponential-backoff retries on 408/429/5xx, honouring
Retry-After. - Honest partial results — a clear status message on partial runs; never a green status hiding an empty dataset.
70+ Actors and counting at apify.com/DevilScrapes. Missing a target? Open an issue here and we'll look at building it.
MIT — the recipes in this repo are yours to copy and adapt.