<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Ben</title>
    <description>The latest articles on DEV Community by Ben (@benthepythondev).</description>
    <link>https://dev.to/benthepythondev</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3960119%2F6b3cea53-7207-4e2d-92b1-1073e28fd866.png</url>
      <title>DEV Community: Ben</title>
      <link>https://dev.to/benthepythondev</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/benthepythondev"/>
    <language>en</language>
    <item>
      <title>How to Scrape Emails from Google Maps (a Pay-As-You-Go Apollo &amp; ZoomInfo Alternative)</title>
      <dc:creator>Ben</dc:creator>
      <pubDate>Sat, 27 Jun 2026 14:26:57 +0000</pubDate>
      <link>https://dev.to/benthepythondev/how-to-scrape-emails-from-google-maps-a-pay-as-you-go-apollo-zoominfo-alternative-57no</link>
      <guid>https://dev.to/benthepythondev/how-to-scrape-emails-from-google-maps-a-pay-as-you-go-apollo-zoominfo-alternative-57no</guid>
      <description>&lt;p&gt;Google Maps is the biggest free B2B database on the planet — every local business, with its website, phone and address. The one thing it won't give you is the &lt;strong&gt;email&lt;/strong&gt;. So most people end up exporting businesses from one tool, then pasting domains into a second email-finder, then verifying in a third. Here's how to do the whole thing in one step, and pay only for what you get.&lt;/p&gt;

&lt;h2&gt;
  
  
  The usual workaround (and why it's painful)
&lt;/h2&gt;

&lt;p&gt;The common stack is: a Maps scraper → a spreadsheet → an email-finder → a verifier. Three tools, three bills, and a lot of copy-pasting. Tools like Apollo or ZoomInfo bundle this, but they're priced for enterprise (annual contracts, per-seat fees) and they're thin on local SMEs, especially outside the US.&lt;/p&gt;

&lt;h2&gt;
  
  
  The one-step approach
&lt;/h2&gt;

&lt;p&gt;The &lt;strong&gt;&lt;a href="https://apify.com/benthepythondev/google-maps-email-scraper" rel="noopener noreferrer"&gt;Google Maps Email Scraper&lt;/a&gt;&lt;/strong&gt; does the search &lt;strong&gt;and&lt;/strong&gt; the email enrichment in a single run. Give it a niche + a city, and for every business it:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Scrapes the listing — name, phone, address, website, rating, categories.&lt;/li&gt;
&lt;li&gt;Visits that business's website — homepage, contact/Kontakt page and &lt;strong&gt;Impressum&lt;/strong&gt; — and pulls the &lt;strong&gt;published email address&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;If nothing is public, tests common business inboxes (info@, sales@, kontakt@…) and validates them with MX and SMTP checks.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;You get one clean row per lead with a &lt;code&gt;primary_email&lt;/code&gt;, a confidence score, and every email it found:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"name"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Studio Berlin Marketing GmbH"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"phone"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"+49 30 1234567"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"website"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"https://www.studio-berlin.de"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"primary_email"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"info@studio-berlin.de"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"email_confidence"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;95&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"email_source"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"impressum"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"rating"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mf"&gt;4.8&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"lead_score"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;92&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Why it's a strong Apollo / ZoomInfo alternative
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Pay-as-you-go&lt;/strong&gt; — a small fee per lead, plus a premium &lt;strong&gt;only when an email is actually found&lt;/strong&gt;. No annual contract, no per-seat tax, no credit rationing.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;You own the data&lt;/strong&gt; — export to CSV/JSON or straight to your CRM via API, Make, Zapier or n8n.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Fresh and targeted&lt;/strong&gt; — sourced live for your exact niche + city, not a stale shared database.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Especially strong in the DACH market&lt;/strong&gt; — German sites are legally required to publish a contact email in their Impressum, so hit rates on German, Austrian and Swiss businesses are very high. Most US-centric tools are thin here.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Example: build a prospect list in one run
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"mode"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"search"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"query"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"dentists"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"location"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Munich, Germany"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"maxResults"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;100&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"requireEmail"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;code&gt;requireEmail: true&lt;/code&gt; means you only get leads that actually have an email — you're not charged the email fee for the ones without. Already have a list of companies? Switch to &lt;code&gt;websites&lt;/code&gt; mode and paste your domains to enrich them directly.&lt;/p&gt;

&lt;h2&gt;
  
  
  Honest trade-offs
&lt;/h2&gt;

&lt;p&gt;This finds &lt;strong&gt;business&lt;/strong&gt; contact emails (the info@/sales@/Impressum kind), not a specific named person's inbox — for that, pair it with a &lt;a href="https://apify.com/benthepythondev/smart-email-finder-verifier" rel="noopener noreferrer"&gt;name-based email finder&lt;/a&gt;. Published addresses are real and high-confidence; role-based guesses are validated by MX (and SMTP where the network allows), so filter by &lt;code&gt;email_confidence&lt;/code&gt; if you only want the surest ones. And use the data for legitimate B2B outreach — honor GDPR/CAN-SPAM and opt-outs.&lt;/p&gt;

&lt;h2&gt;
  
  
  FAQ
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Do I need an API key?&lt;/strong&gt; No — a search query + location is enough.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Will it work outside Germany?&lt;/strong&gt; Yes, anywhere Google Maps covers; the Impressum edge just makes DACH hit rates exceptionally high.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Can I schedule it?&lt;/strong&gt; Yes — recurring runs and full API/Make/Zapier/n8n integration.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How much does it cost?&lt;/strong&gt; Per result, with the email premium charged only when an email is found — far below an enterprise seat for the same verified-lead output.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Build verified B2B lead lists straight from Google Maps with the &lt;a href="https://apify.com/benthepythondev/google-maps-email-scraper" rel="noopener noreferrer"&gt;Google Maps Email Scraper&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>marketing</category>
    </item>
    <item>
      <title>ImmoScout24 Alternative: German Real-Estate Data Without the Blocks</title>
      <dc:creator>Ben</dc:creator>
      <pubDate>Sat, 27 Jun 2026 13:31:22 +0000</pubDate>
      <link>https://dev.to/benthepythondev/immoscout24-alternative-german-real-estate-data-without-the-blocks-llc</link>
      <guid>https://dev.to/benthepythondev/immoscout24-alternative-german-real-estate-data-without-the-blocks-llc</guid>
      <description>&lt;p&gt;ImmoScout24 is Germany's #1 property portal — and one of the hardest to scrape, with&lt;br&gt;
aggressive blocking and pricey API access. The good news: most of the same German&lt;br&gt;
real-estate data is available from sources that are &lt;strong&gt;far more accessible&lt;/strong&gt;, including&lt;br&gt;
private-landlord inventory ImmoScout under-represents. Here are three ImmoScout24&lt;br&gt;
alternatives for actual data, by use case.&lt;/p&gt;
&lt;h2&gt;
  
  
  1. Private-landlord rentals &amp;amp; sales → Kleinanzeigen
&lt;/h2&gt;

&lt;p&gt;Kleinanzeigen is where private owners list directly — often cheaper and absent from&lt;br&gt;
the big portals. The&lt;br&gt;
&lt;strong&gt;&lt;a href="https://apify.com/benthepythondev/kleinanzeigen-immobilien-scraper" rel="noopener noreferrer"&gt;Kleinanzeigen Immobilien Scraper&lt;/a&gt;&lt;/strong&gt;&lt;br&gt;
parses rooms, living space, Kaltmiete/Warmmiete, deposit, address and PLZ into clean&lt;br&gt;
fields, with city/radius search.&lt;/p&gt;
&lt;h2&gt;
  
  
  2. Agent-listed properties → Immowelt
&lt;/h2&gt;

&lt;p&gt;For broader agent-listed inventory, the&lt;br&gt;
&lt;strong&gt;&lt;a href="https://apify.com/benthepythondev/immowelt-scraper" rel="noopener noreferrer"&gt;Immowelt Scraper&lt;/a&gt;&lt;/strong&gt; pulls&lt;br&gt;
rental and sale listings with price, size, rooms, location and details — a strong&lt;br&gt;
ImmoScout substitute for market analysis.&lt;/p&gt;
&lt;h2&gt;
  
  
  3. Shared flats &amp;amp; rentals (WGs) → WG-Gesucht
&lt;/h2&gt;

&lt;p&gt;For the shared-apartment and rental market (huge in German cities), the&lt;br&gt;
&lt;strong&gt;&lt;a href="https://apify.com/benthepythondev/wg-gesucht-scraper" rel="noopener noreferrer"&gt;WG-Gesucht Scraper&lt;/a&gt;&lt;/strong&gt; extracts&lt;br&gt;
room/flat listings with price, location and availability — inventory you won't find on&lt;br&gt;
ImmoScout at all.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"locationCode"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"münchen"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"radiusKm"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;20&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"maxResults"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;200&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Why these beat fighting ImmoScout24
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Accessible&lt;/strong&gt; — they don't wall you off the way ImmoScout does, so runs finish.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Different inventory&lt;/strong&gt; — private-landlord and WG listings ImmoScout under-covers.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Pay-as-you-go&lt;/strong&gt; — per-result pricing, no portal API contract.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Clean, typed fields&lt;/strong&gt; — rooms, m², rent, deposit, address — ready for analysis.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Honest note
&lt;/h2&gt;

&lt;p&gt;These are alternative &lt;em&gt;sources&lt;/em&gt; of German property data, not ImmoScout24 scrapers. If&lt;br&gt;
you specifically need ImmoScout's listings, you'll need ImmoScout. For &lt;strong&gt;market&lt;br&gt;
analysis, private-landlord leads, rentals and WGs&lt;/strong&gt;, this trio is cheaper, more&lt;br&gt;
reliable, and covers inventory the big portal misses. (For Austria, add&lt;br&gt;
&lt;strong&gt;&lt;a href="https://apify.com/benthepythondev/willhaben-scraper" rel="noopener noreferrer"&gt;willhaben&lt;/a&gt;&lt;/strong&gt;.)&lt;/p&gt;

&lt;h2&gt;
  
  
  FAQ
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Do I need an API key?&lt;/strong&gt; No — give a city/PLZ and your filters.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Rent and buy?&lt;/strong&gt; Yes — Kleinanzeigen and Immowelt cover both; WG-Gesucht covers shared/rentals.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Can I search by city?&lt;/strong&gt; Yes — city names auto-resolve; radius search supported.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Is it legal?&lt;/strong&gt; These read publicly available listing data. Use responsibly and within&lt;br&gt;
each site's terms and applicable law.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;German real-estate data without the ImmoScout wall: &lt;a href="https://apify.com/benthepythondev/kleinanzeigen-immobilien-scraper" rel="noopener noreferrer"&gt;Kleinanzeigen Immobilien&lt;/a&gt;, &lt;a href="https://apify.com/benthepythondev/immowelt-scraper" rel="noopener noreferrer"&gt;Immowelt&lt;/a&gt;, &lt;a href="https://apify.com/benthepythondev/wg-gesucht-scraper" rel="noopener noreferrer"&gt;WG-Gesucht&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>realestate</category>
      <category>germany</category>
      <category>webscraping</category>
      <category>proptech</category>
    </item>
    <item>
      <title>Phantombuster Alternative: Pay-As-You-Go Social Media Data Extraction</title>
      <dc:creator>Ben</dc:creator>
      <pubDate>Sat, 27 Jun 2026 13:27:32 +0000</pubDate>
      <link>https://dev.to/benthepythondev/phantombuster-alternative-pay-as-you-go-social-media-data-extraction-3p04</link>
      <guid>https://dev.to/benthepythondev/phantombuster-alternative-pay-as-you-go-social-media-data-extraction-3p04</guid>
      <description>&lt;p&gt;Phantombuster is a handy social-automation suite — but it's subscription-based with&lt;br&gt;
execution-time limits, and a lot of people only use it for one thing: &lt;strong&gt;pulling social&lt;br&gt;
media data&lt;/strong&gt; (posts, profiles, followers). If that's you, you can do the data side&lt;br&gt;
pay-as-you-go, with no monthly seat and no time budget to ration.&lt;/p&gt;
&lt;h2&gt;
  
  
  What most people actually use it for
&lt;/h2&gt;

&lt;p&gt;Extracting structured data from social platforms — a creator's posts, a profile's&lt;br&gt;
stats, a follower list, hashtag/keyword streams. That's a scraping job, and you can&lt;br&gt;
price it per result instead of renting hours.&lt;/p&gt;
&lt;h2&gt;
  
  
  The pay-as-you-go data stack
&lt;/h2&gt;

&lt;p&gt;Pick the network:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://apify.com/benthepythondev/bluesky-scraper" rel="noopener noreferrer"&gt;Bluesky Scraper&lt;/a&gt;&lt;/strong&gt; — posts, profiles, followers, search (no login needed for most).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://apify.com/benthepythondev/mastodon-scraper" rel="noopener noreferrer"&gt;Mastodon Scraper&lt;/a&gt;&lt;/strong&gt; — hashtags, accounts, trends from any instance.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://apify.com/benthepythondev/instagram-intelligence-scraper" rel="noopener noreferrer"&gt;Instagram Intelligence Scraper&lt;/a&gt;&lt;/strong&gt; — profiles, posts, comments, hashtags + lead scoring.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://apify.com/benthepythondev/tiktok-profile-scraper" rel="noopener noreferrer"&gt;TikTok Profile Scraper&lt;/a&gt;&lt;/strong&gt; — public profile stats at scale.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://apify.com/benthepythondev/reddit-scraper" rel="noopener noreferrer"&gt;Reddit Scraper&lt;/a&gt;&lt;/strong&gt; + &lt;strong&gt;&lt;a href="https://apify.com/benthepythondev/lemmy-scraper" rel="noopener noreferrer"&gt;Lemmy Scraper&lt;/a&gt;&lt;/strong&gt; for discussion data.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Each returns clean JSON (text, engagement counts, author, media) ready for analysis or&lt;br&gt;
an LLM:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"mode"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"search"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"searchTerms"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;"#yourbrand"&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"maxItems"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;500&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Why this beats a subscription
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Per-result pricing&lt;/strong&gt; — pay for the data you pull, no monthly seat or execution-time cap.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Own the data&lt;/strong&gt; — export to CSV/JSON, no lock-in.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;One consistent shape&lt;/strong&gt; across networks — easy to pipe into a warehouse or LLM.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Emerging networks covered&lt;/strong&gt; — Bluesky/Mastodon/Lemmy, where competition is thin.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Honest trade-offs
&lt;/h2&gt;

&lt;p&gt;Phantombuster also does &lt;em&gt;automation&lt;/em&gt; (auto-connect, auto-message — mostly LinkedIn&lt;br&gt;
growth flows). These actors don't automate actions on your account; they &lt;strong&gt;extract&lt;br&gt;
data&lt;/strong&gt;. If you need account automation, that's a different (and ToS-riskier) job. For&lt;br&gt;
clean social-data extraction and listening, pay-as-you-go scraping is cheaper and&lt;br&gt;
simpler.&lt;/p&gt;

&lt;h2&gt;
  
  
  FAQ
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Do I need logins?&lt;/strong&gt; Mostly no (Bluesky/Mastodon/Lemmy public data); keyword search on&lt;br&gt;
some networks works best with an optional app token.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Can I schedule it?&lt;/strong&gt; Yes — recurring runs + API/Make/Zapier/n8n.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Which networks?&lt;/strong&gt; Bluesky, Mastodon, Lemmy, Instagram, TikTok, Reddit today.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Is it legal?&lt;/strong&gt; It reads publicly available data via public APIs/pages. Use it&lt;br&gt;
responsibly and within each platform's terms.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Extract social data pay-as-you-go: &lt;a href="https://apify.com/benthepythondev/bluesky-scraper" rel="noopener noreferrer"&gt;Bluesky&lt;/a&gt;, &lt;a href="https://apify.com/benthepythondev/mastodon-scraper" rel="noopener noreferrer"&gt;Mastodon&lt;/a&gt;, &lt;a href="https://apify.com/benthepythondev/instagram-intelligence-scraper" rel="noopener noreferrer"&gt;Instagram&lt;/a&gt;, &lt;a href="https://apify.com/benthepythondev/tiktok-profile-scraper" rel="noopener noreferrer"&gt;TikTok&lt;/a&gt;, &lt;a href="https://apify.com/benthepythondev/reddit-scraper" rel="noopener noreferrer"&gt;Reddit&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>socialmedia</category>
      <category>webscraping</category>
      <category>automation</category>
      <category>data</category>
    </item>
    <item>
      <title>ZoomInfo Alternative: Build B2B Contact Data Without the Enterprise Contract</title>
      <dc:creator>Ben</dc:creator>
      <pubDate>Sat, 27 Jun 2026 13:23:52 +0000</pubDate>
      <link>https://dev.to/benthepythondev/zoominfo-alternative-build-b2b-contact-data-without-the-enterprise-contract-lm8</link>
      <guid>https://dev.to/benthepythondev/zoominfo-alternative-build-b2b-contact-data-without-the-enterprise-contract-lm8</guid>
      <description>&lt;p&gt;ZoomInfo is powerful — and priced for enterprises, with annual contracts that start in&lt;br&gt;
the five figures. If what you actually need is &lt;strong&gt;targeted company + contact data&lt;/strong&gt;&lt;br&gt;
(businesses in a vertical and region, with phone, website and email), you can source&lt;br&gt;
it yourself from live public data for a tiny fraction of the cost, and own every row.&lt;/p&gt;
&lt;h2&gt;
  
  
  What you're really paying ZoomInfo for
&lt;/h2&gt;

&lt;p&gt;A giant prebuilt contact database with intent signals and org charts, billed annually&lt;br&gt;
per seat. That's overkill (and over-budget) if your job is &lt;strong&gt;building targeted&lt;br&gt;
prospect lists&lt;/strong&gt; for outbound — the most common use case by far.&lt;/p&gt;
&lt;h2&gt;
  
  
  The build-your-own stack
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Find the companies.&lt;/strong&gt; Pick your source by market:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://apify.com/benthepythondev/google-maps-business-scraper" rel="noopener noreferrer"&gt;Google Maps Business Scraper&lt;/a&gt;&lt;/strong&gt; — any niche + city (name, address, phone, website, rating) with a lead score.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://apify.com/benthepythondev/gelbe-seiten-scraper" rel="noopener noreferrer"&gt;Gelbe Seiten Scraper&lt;/a&gt;&lt;/strong&gt; (Germany) and &lt;strong&gt;&lt;a href="https://apify.com/benthepythondev/business-contact-scraper" rel="noopener noreferrer"&gt;local.ch Scraper&lt;/a&gt;&lt;/strong&gt; (Switzerland) for DACH B2B directories.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Get the emails.&lt;/strong&gt; Feed the companies' domains into the&lt;br&gt;
&lt;strong&gt;&lt;a href="https://apify.com/benthepythondev/smart-email-finder-verifier" rel="noopener noreferrer"&gt;Smart Email Finder &amp;amp; Verifier&lt;/a&gt;&lt;/strong&gt; —&lt;br&gt;
it tests common patterns, runs SMTP/MX checks, flags catch-all domains and returns a&lt;br&gt;
confidence score, so your list is deliverable before you send.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"search"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"logistics companies"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"location"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Hamburg, Germany"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"maxResults"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;500&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Why this beats an enterprise seat
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Pay-as-you-go&lt;/strong&gt; — per result, no annual contract or per-seat tax.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;You own the data&lt;/strong&gt; — export to CSV/CRM, no usage caps or credit rationing.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Fresh &amp;amp; targeted&lt;/strong&gt; — sourced live for your exact ICP, not a stale shared DB.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;DACH-strong&lt;/strong&gt; — most US-centric tools are thin on German/Swiss SMEs; directory
scrapers aren't.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Honest trade-offs
&lt;/h2&gt;

&lt;p&gt;ZoomInfo's edge is scale, intent data and org hierarchy. If you need buying-intent&lt;br&gt;
signals or a pre-enriched database of millions, that's a different product. For&lt;br&gt;
&lt;strong&gt;building targeted, verified outbound lists on demand&lt;/strong&gt; — especially in DACH — live&lt;br&gt;
sourcing + verification is dramatically cheaper and just as actionable.&lt;/p&gt;

&lt;h2&gt;
  
  
  FAQ
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Is this GDPR-compliant?&lt;/strong&gt; You're collecting publicly listed business contact data;&lt;br&gt;
use it for legitimate B2B outreach and honor opt-outs and local law.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Do I need an API key?&lt;/strong&gt; No for the directory/Maps scrapers or the email finder.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Can I automate it?&lt;/strong&gt; Yes — schedule runs and pipe results to your CRM via API, Make,&lt;br&gt;
Zapier or n8n.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How accurate are the emails?&lt;/strong&gt; SMTP/MX-verified with a confidence score; drop the&lt;br&gt;
low-confidence ones before sending.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Build B2B lists on demand: &lt;a href="https://apify.com/benthepythondev/google-maps-business-scraper" rel="noopener noreferrer"&gt;Google Maps Business Scraper&lt;/a&gt; + &lt;a href="https://apify.com/benthepythondev/smart-email-finder-verifier" rel="noopener noreferrer"&gt;Smart Email Finder &amp;amp; Verifier&lt;/a&gt;, plus &lt;a href="https://apify.com/benthepythondev/gelbe-seiten-scraper" rel="noopener noreferrer"&gt;Gelbe Seiten&lt;/a&gt; and &lt;a href="https://apify.com/benthepythondev/business-contact-scraper" rel="noopener noreferrer"&gt;local.ch&lt;/a&gt; for DACH.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>leadgeneration</category>
      <category>sales</category>
      <category>b2b</category>
      <category>webscraping</category>
    </item>
    <item>
      <title>mobile.de Alternative: Get Private-Seller German Used-Car Data</title>
      <dc:creator>Ben</dc:creator>
      <pubDate>Sat, 27 Jun 2026 11:19:18 +0000</pubDate>
      <link>https://dev.to/benthepythondev/mobilede-alternative-get-private-seller-german-used-car-data-2381</link>
      <guid>https://dev.to/benthepythondev/mobilede-alternative-get-private-seller-german-used-car-data-2381</guid>
      <description>&lt;p&gt;mobile.de is the default for German used-car data — but it's &lt;strong&gt;dealer-dominated&lt;/strong&gt;,&lt;br&gt;
heavily defended, and you're seeing the same inventory every other dealer and tool&lt;br&gt;
sees. The biggest blind spot it leaves is &lt;strong&gt;private sellers&lt;/strong&gt;, who list on&lt;br&gt;
Kleinanzeigen (formerly eBay Kleinanzeigen). That's where the arbitrage, the cheaper&lt;br&gt;
cars and the motivated sellers are — and it's far more accessible to pull.&lt;/p&gt;
&lt;h2&gt;
  
  
  Why private-seller data is the edge
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Different inventory&lt;/strong&gt; — private owners list cheaper and earlier than dealers; it's
the half of the market mobile.de under-represents.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Arbitrage &amp;amp; sourcing&lt;/strong&gt; — dealers and flippers buy private and resell; this is the
sourcing side.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Cleaner economics&lt;/strong&gt; — Kleinanzeigen is easier to access reliably than mobile.de's
defenses.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;
  
  
  The approach
&lt;/h2&gt;

&lt;p&gt;The &lt;strong&gt;&lt;a href="https://apify.com/benthepythondev/kleinanzeigen-autos-scraper" rel="noopener noreferrer"&gt;Kleinanzeigen Autos Scraper&lt;/a&gt;&lt;/strong&gt;&lt;br&gt;
parses the German car attributes most tools drop — &lt;strong&gt;Marke (make), Modell,&lt;br&gt;
Erstzulassung (year), Kilometerstand (mileage), Kraftstoff (fuel), Getriebe&lt;br&gt;
(gearbox), Leistung (power), price&lt;/strong&gt; — into clean, typed fields, with city/PLZ +&lt;br&gt;
radius search.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"locationCode"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"berlin"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"maxPrice"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;20000&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"minYear"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;2016&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"maxMileage"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;120000&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Output is one tidy row per car — make, model, year, mileage, fuel, transmission,&lt;br&gt;
power, price, location, URL — ready for price analysis, arbitrage screening or a&lt;br&gt;
search product.&lt;/p&gt;

&lt;h2&gt;
  
  
  Pair it for full DACH coverage
&lt;/h2&gt;

&lt;p&gt;Used cars are one slice of the DACH market. The same engine powers the&lt;br&gt;
&lt;strong&gt;&lt;a href="https://apify.com/benthepythondev/kleinanzeigen-immobilien-scraper" rel="noopener noreferrer"&gt;Kleinanzeigen Immobilien Scraper&lt;/a&gt;&lt;/strong&gt;&lt;br&gt;
(real estate) and &lt;strong&gt;&lt;a href="https://apify.com/benthepythondev/kleinanzeigen-jobs-scraper" rel="noopener noreferrer"&gt;Kleinanzeigen Jobs Scraper&lt;/a&gt;&lt;/strong&gt;&lt;br&gt;
(local jobs), plus &lt;strong&gt;&lt;a href="https://apify.com/benthepythondev/willhaben-scraper" rel="noopener noreferrer"&gt;willhaben&lt;/a&gt;&lt;/strong&gt;&lt;br&gt;
for Austria — so you can cover the German-speaking market with one consistent data shape.&lt;/p&gt;

&lt;h2&gt;
  
  
  Honest note
&lt;/h2&gt;

&lt;p&gt;This complements mobile.de rather than replacing it: mobile.de still has the deepest&lt;br&gt;
&lt;em&gt;dealer&lt;/em&gt; inventory. For &lt;strong&gt;private-seller&lt;/strong&gt; cars, market-price analysis and sourcing,&lt;br&gt;
Kleinanzeigen is the better, more accessible source — and it's the half most people miss.&lt;/p&gt;

&lt;h2&gt;
  
  
  FAQ
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Do I need an API key?&lt;/strong&gt; No — give a location and optional filters.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Can I filter by make/model?&lt;/strong&gt; Best-effort by title keyword; for exact make filtering,&lt;br&gt;
paste a Kleinanzeigen search URL with the make facet selected.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What fields do I get?&lt;/strong&gt; Make, model, year, first registration, mileage, price, fuel,&lt;br&gt;
transmission, power, condition, color and location, where the listing provides them.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Is it legal?&lt;/strong&gt; It reads publicly available listing data. Use it responsibly and&lt;br&gt;
within applicable laws and Kleinanzeigen's terms.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Get the private-seller side of the German car market with the &lt;a href="https://apify.com/benthepythondev/kleinanzeigen-autos-scraper" rel="noopener noreferrer"&gt;Kleinanzeigen Autos Scraper&lt;/a&gt; — a data complement to mobile.de.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>webscraping</category>
      <category>germany</category>
      <category>automotive</category>
      <category>data</category>
    </item>
    <item>
      <title>Zillow Alternative: Free Real-Estate Data Sources That Don't Block You</title>
      <dc:creator>Ben</dc:creator>
      <pubDate>Sat, 27 Jun 2026 11:15:59 +0000</pubDate>
      <link>https://dev.to/benthepythondev/zillow-alternative-free-real-estate-data-sources-that-dont-block-you-41l5</link>
      <guid>https://dev.to/benthepythondev/zillow-alternative-free-real-estate-data-sources-that-dont-block-you-41l5</guid>
      <description>&lt;p&gt;Everyone tries to scrape Zillow first — and hits a wall of CAPTCHAs, bans and a $300–&lt;br&gt;
$800/month lead bill. The smarter move is to pull comparable real-estate data from&lt;br&gt;
sources that are &lt;strong&gt;far easier to access&lt;/strong&gt; and often carry inventory Zillow doesn't.&lt;br&gt;
Here are three Zillow alternatives for actual data, by use case.&lt;/p&gt;

&lt;h2&gt;
  
  
  1. Off-market &amp;amp; FSBO leads → Craigslist
&lt;/h2&gt;

&lt;p&gt;Zillow's leads are bought by every agent in your zip. Craigslist is full of&lt;br&gt;
&lt;strong&gt;for-sale-by-owner&lt;/strong&gt; sellers with no agent — exclusive, direct-contact leads that&lt;br&gt;
aren't on the MLS. The&lt;br&gt;
&lt;strong&gt;&lt;a href="https://apify.com/benthepythondev/craigslist-real-estate-scraper" rel="noopener noreferrer"&gt;Craigslist Real Estate Scraper&lt;/a&gt;&lt;/strong&gt;&lt;br&gt;
pulls price, beds, baths, sqft, photos, contact availability and a 0–100 lead score,&lt;br&gt;
with an owner-only filter for pure FSBO.&lt;/p&gt;

&lt;h2&gt;
  
  
  2. US homes for sale, rent &amp;amp; sold comps → Redfin
&lt;/h2&gt;

&lt;p&gt;For structured listing data and &lt;strong&gt;sold comps&lt;/strong&gt; (the part Zillow gates hardest), Redfin&lt;br&gt;
is more accessible. The&lt;br&gt;
&lt;strong&gt;&lt;a href="https://apify.com/benthepythondev/redfin-scraper" rel="noopener noreferrer"&gt;Redfin Scraper&lt;/a&gt;&lt;/strong&gt; returns price,&lt;br&gt;
beds, baths, sqft, address and photos across for-sale, rental and sold — clean enough&lt;br&gt;
for valuation models and market dashboards.&lt;/p&gt;

&lt;h2&gt;
  
  
  3. International / UK property → OnTheMarket
&lt;/h2&gt;

&lt;p&gt;Zillow is US-only. For the UK, the&lt;br&gt;
&lt;strong&gt;&lt;a href="https://apify.com/benthepythondev/onthemarket-scraper" rel="noopener noreferrer"&gt;OnTheMarket Scraper&lt;/a&gt;&lt;/strong&gt; pulls&lt;br&gt;
for-sale and to-rent listings with price, beds, type, address, agent and even&lt;br&gt;
latitude/longitude — without the heavy blocking Rightmove and Zoopla throw up.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why these beat fighting Zillow
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;They don't ban you on sight&lt;/strong&gt; — Craigslist, Redfin and OnTheMarket are far more
scrapable than Zillow, so runs actually finish.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Different, exclusive inventory&lt;/strong&gt; — FSBO and off-market deals Zillow never shows.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Pay-as-you-go&lt;/strong&gt; — per-result pricing instead of a $300–800/month lead contract.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Own the data&lt;/strong&gt; — export to CSV/Excel/JSON for your CRM, model or product.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Honest note
&lt;/h2&gt;

&lt;p&gt;These aren't Zillow scrapers — they're alternative &lt;em&gt;sources&lt;/em&gt; of comparable data&lt;br&gt;
(listings, comps, leads). If you specifically need Zillow's Zestimate, you'll need&lt;br&gt;
Zillow. For everything else — leads, listings, comps, market trends — these are&lt;br&gt;
cheaper, more reliable, and often richer.&lt;/p&gt;

&lt;h2&gt;
  
  
  FAQ
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Do I need an API key?&lt;/strong&gt; No — give a city/location and your filters.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Can I get sold comps?&lt;/strong&gt; Yes — via the Redfin scraper (for-sale, rent and sold).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;FSBO only?&lt;/strong&gt; Yes — the Craigslist scraper has an owner-only filter.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Is it legal?&lt;/strong&gt; These read publicly available listing data. Use responsibly and&lt;br&gt;
within each site's terms and applicable law.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Real-estate data without the Zillow wall: &lt;a href="https://apify.com/benthepythondev/craigslist-real-estate-scraper" rel="noopener noreferrer"&gt;Craigslist Real Estate&lt;/a&gt; (FSBO), &lt;a href="https://apify.com/benthepythondev/redfin-scraper" rel="noopener noreferrer"&gt;Redfin&lt;/a&gt; (US comps), &lt;a href="https://apify.com/benthepythondev/onthemarket-scraper" rel="noopener noreferrer"&gt;OnTheMarket&lt;/a&gt; (UK).&lt;/em&gt;&lt;/p&gt;

</description>
      <category>realestate</category>
      <category>webscraping</category>
      <category>zillow</category>
      <category>proptech</category>
    </item>
    <item>
      <title>Apollo.io Alternative: Build Your Own B2B Lead Lists (Pay-As-You-Go)</title>
      <dc:creator>Ben</dc:creator>
      <pubDate>Sat, 27 Jun 2026 11:11:30 +0000</pubDate>
      <link>https://dev.to/benthepythondev/apolloio-alternative-build-your-own-b2b-lead-lists-pay-as-you-go-3hof</link>
      <guid>https://dev.to/benthepythondev/apolloio-alternative-build-your-own-b2b-lead-lists-pay-as-you-go-3hof</guid>
      <description>&lt;p&gt;Apollo.io is great until the bill arrives and the seats stack up — and you're still&lt;br&gt;
renting access to a contact database everyone else also rents. If you mainly need&lt;br&gt;
&lt;strong&gt;targeted B2B lead lists&lt;/strong&gt; (businesses in a niche + a location, with phone and&lt;br&gt;
email), you can build them yourself from live public sources for a fraction of the&lt;br&gt;
cost, and own the data outright. Here's the pay-as-you-go approach.&lt;/p&gt;
&lt;h2&gt;
  
  
  Where Apollo's cost comes from
&lt;/h2&gt;

&lt;p&gt;Apollo charges per seat and gates exports/credits by plan. For a small team or a&lt;br&gt;
solo operator running campaigns, that's $49–$149+/seat/month before you've sent a&lt;br&gt;
single email — and the data is a shared database, not freshly sourced for your niche.&lt;/p&gt;
&lt;h2&gt;
  
  
  The build-your-own approach (two steps)
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Step 1 — find the businesses.&lt;/strong&gt; Google Maps is the largest live local-business&lt;br&gt;
directory: name, address, phone, website, category, rating. Every "niche + city"&lt;br&gt;
search is a lead list. The&lt;br&gt;
&lt;strong&gt;&lt;a href="https://apify.com/benthepythondev/google-maps-business-scraper" rel="noopener noreferrer"&gt;Google Maps Business Scraper&lt;/a&gt;&lt;/strong&gt;&lt;br&gt;
turns a search like "dentists in Austin" into a clean, exportable table — with an AI&lt;br&gt;
lead score so you prioritize.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 2 — get the emails.&lt;/strong&gt; Maps gives you the website; feed those domains into the&lt;br&gt;
&lt;strong&gt;&lt;a href="https://apify.com/benthepythondev/smart-email-finder-verifier" rel="noopener noreferrer"&gt;Smart Email Finder &amp;amp; Verifier&lt;/a&gt;&lt;/strong&gt;,&lt;br&gt;
which tests common patterns, runs SMTP/MX checks, flags catch-all domains and returns&lt;br&gt;
a confidence score. Now you've got deliverable, verified B2B contacts — sourced fresh&lt;br&gt;
for your exact target, not pulled from a shared pool.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"search"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"marketing agencies"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"location"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Berlin, Germany"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"maxResults"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;300&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Why this beats renting a database
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Pay-as-you-go, not per-seat&lt;/strong&gt; — you pay for the rows you pull, nothing else.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;You own the data&lt;/strong&gt; — export to CSV/CRM, no lock-in, no export caps.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Fresh &amp;amp; niche-specific&lt;/strong&gt; — sourced live for your target, not a stale shared DB.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;No team-seat tax&lt;/strong&gt; — run it solo or wire it into Make/Zapier/n8n.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Honest trade-offs
&lt;/h2&gt;

&lt;p&gt;Apollo has intent data, org charts and a massive prebuilt contact database — if you&lt;br&gt;
need those, it's a different product. This approach is for the most common job:&lt;br&gt;
&lt;strong&gt;building targeted, verified B2B lead lists cheaply and on demand.&lt;/strong&gt; For that, live&lt;br&gt;
sourcing + verification is faster and far cheaper.&lt;/p&gt;

&lt;h2&gt;
  
  
  FAQ
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Is this really cheaper than Apollo?&lt;/strong&gt; For list-building, yes — you pay per result&lt;br&gt;
instead of per seat/month, with no export credits to ration.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Do I need an API key?&lt;/strong&gt; No for Google Maps; the email finder needs no third-party&lt;br&gt;
key either.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Will the emails be valid?&lt;/strong&gt; They're SMTP/MX-verified with a confidence score, so you&lt;br&gt;
can drop the risky ones before sending.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Can I automate it?&lt;/strong&gt; Yes — schedule runs and connect to your CRM via API, Make,&lt;br&gt;
Zapier or n8n.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Is this legal?&lt;/strong&gt; It reads publicly available business data and verifies emails&lt;br&gt;
without sending. Use it for legitimate, compliant outreach (respect GDPR/CAN-SPAM).&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Build lead lists on demand with the &lt;a href="https://apify.com/benthepythondev/google-maps-business-scraper" rel="noopener noreferrer"&gt;Google Maps Business Scraper&lt;/a&gt; + &lt;a href="https://apify.com/benthepythondev/smart-email-finder-verifier" rel="noopener noreferrer"&gt;Smart Email Finder &amp;amp; Verifier&lt;/a&gt; — pay per result, own the data.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>leadgeneration</category>
      <category>sales</category>
      <category>webscraping</category>
      <category>b2b</category>
    </item>
    <item>
      <title>How to Scrape Google Maps for Business Leads (Python + No-Code)</title>
      <dc:creator>Ben</dc:creator>
      <pubDate>Sat, 27 Jun 2026 09:45:32 +0000</pubDate>
      <link>https://dev.to/benthepythondev/how-to-scrape-google-maps-for-business-leads-python-no-code-7e6</link>
      <guid>https://dev.to/benthepythondev/how-to-scrape-google-maps-for-business-leads-python-no-code-7e6</guid>
      <description>&lt;p&gt;Google Maps is the world's biggest local-business database — name, address, phone,&lt;br&gt;
website, rating, hours, category, for tens of millions of businesses. For B2B sales,&lt;br&gt;
local agencies and market research, it's the single best source of &lt;strong&gt;fresh, targeted&lt;br&gt;
leads&lt;/strong&gt;. The official Places API is expensive, quota-limited and caps results; here's&lt;br&gt;
how to get the same data at scale.&lt;/p&gt;
&lt;h2&gt;
  
  
  Why Google Maps for lead-gen?
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Targeted by niche + location&lt;/strong&gt; — "dentists in Austin", "plumbers in Berlin",
"law firms in London". Every search is a lead list.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Contactable&lt;/strong&gt; — phone and (often) website for direct outreach.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Enrichable&lt;/strong&gt; — pair the website with an email finder and you've got a full B2B
contact record.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;
  
  
  The hard part
&lt;/h2&gt;

&lt;p&gt;Google Maps is heavily defended: it lazy-loads results as you scroll, rate-limits&lt;br&gt;
aggressively, and caps the official Places API at ~60 results per query. Doing this&lt;br&gt;
reliably means a headless browser or a maintained scraping engine, residential&lt;br&gt;
proxies, scroll/pagination handling, and de-duplication. A naive script gets blocked&lt;br&gt;
fast — this is one to use a maintained tool for rather than build from scratch.&lt;/p&gt;
&lt;h2&gt;
  
  
  The no-code option
&lt;/h2&gt;

&lt;p&gt;The &lt;strong&gt;&lt;a href="https://apify.com/benthepythondev/google-maps-business-scraper" rel="noopener noreferrer"&gt;Google Maps Business Scraper&lt;/a&gt;&lt;/strong&gt;&lt;br&gt;
on Apify does it — enter a search and location, click Run, get a clean lead list.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"search"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"dentists"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"location"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Austin, TX"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"maxResults"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;200&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Output is one clean row per business — name, full address, phone, website, rating,&lt;br&gt;
review count, category, coordinates and hours — plus an &lt;strong&gt;AI lead score&lt;/strong&gt; so you work&lt;br&gt;
the best prospects first. Export to CSV/Excel for your CRM, or JSON for a pipeline.&lt;/p&gt;

&lt;h2&gt;
  
  
  Turn places into a real contact list
&lt;/h2&gt;

&lt;p&gt;Maps gives you the business + website; the money move is &lt;strong&gt;enrichment&lt;/strong&gt;. Feed the&lt;br&gt;
websites into the&lt;br&gt;
&lt;strong&gt;&lt;a href="https://apify.com/benthepythondev/smart-email-finder-verifier" rel="noopener noreferrer"&gt;Smart Email Finder &amp;amp; Verifier&lt;/a&gt;&lt;/strong&gt;&lt;br&gt;
to get verified email addresses, and you've gone from "a map pin" to "a deliverable&lt;br&gt;
B2B contact" — the exact workflow lead-gen agencies sell for real money.&lt;/p&gt;

&lt;h2&gt;
  
  
  Common use cases
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;🎯 B2B sales &amp;amp; agencies&lt;/strong&gt; — build targeted prospect lists by industry + city.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;📈 Market research&lt;/strong&gt; — map competitor density, ratings and coverage by area.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;📍 Local SEO / data products&lt;/strong&gt; — power directories and local-data tools.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;🤝 Partnerships&lt;/strong&gt; — find every business of a type in a region in minutes.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  FAQ
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Do I need a Google API key?&lt;/strong&gt; No — and you're not limited to the Places API's&lt;br&gt;
~60-result cap.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Can I get emails?&lt;/strong&gt; Maps gives the website; pair it with an email-finder actor to&lt;br&gt;
get verified emails.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How many results?&lt;/strong&gt; Set your max — it scrolls and paginates past the usual caps.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Can I run it on a schedule?&lt;/strong&gt; Yes — schedule recurring runs to keep lead lists fresh,&lt;br&gt;
or call it via API / Make / Zapier / n8n.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Is scraping Google Maps legal?&lt;/strong&gt; It reads publicly available business listings. Use&lt;br&gt;
it responsibly for legitimate lead-gen and within applicable laws and terms.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Building a lead pipeline? The &lt;a href="https://apify.com/benthepythondev/google-maps-business-scraper" rel="noopener noreferrer"&gt;Google Maps Business Scraper&lt;/a&gt; plus the &lt;a href="https://apify.com/benthepythondev/smart-email-finder-verifier" rel="noopener noreferrer"&gt;Smart Email Finder &amp;amp; Verifier&lt;/a&gt; turn local search into deliverable B2B contacts.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>webscraping</category>
      <category>leadgeneration</category>
      <category>googlemaps</category>
      <category>python</category>
    </item>
    <item>
      <title>How to Find FSBO Real Estate Leads on Craigslist (Python + No-Code)</title>
      <dc:creator>Ben</dc:creator>
      <pubDate>Sat, 27 Jun 2026 09:41:15 +0000</pubDate>
      <link>https://dev.to/benthepythondev/how-to-find-fsbo-real-estate-leads-on-craigslist-python-no-code-2lg1</link>
      <guid>https://dev.to/benthepythondev/how-to-find-fsbo-real-estate-leads-on-craigslist-python-no-code-2lg1</guid>
      <description>&lt;p&gt;Every real-estate agent and investor wants &lt;strong&gt;FSBO leads&lt;/strong&gt; — for-sale-by-owner&lt;br&gt;
listings, where the seller has no agent and is reachable directly. Zillow charges&lt;br&gt;
$300–$800/month for lead lists that every other agent also buys. Meanwhile&lt;br&gt;
&lt;strong&gt;Craigslist&lt;/strong&gt; is full of FSBO sellers, off-market deals and rentals, with almost no&lt;br&gt;
competition mining it. If you can pull those listings into a spreadsheet, you've got&lt;br&gt;
exclusive leads for pennies.&lt;/p&gt;
&lt;h2&gt;
  
  
  Why Craigslist for real estate?
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Direct-to-owner&lt;/strong&gt; — FSBO sellers post themselves, so there's no listing agent
gatekeeping the contact.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Off-market&lt;/strong&gt; — these properties aren't on the MLS, so they're not bid up.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Cheap &amp;amp; open&lt;/strong&gt; — Craigslist is far easier to read than Zillow/Realtor, and most
agents ignore it entirely.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;
  
  
  The manual way (Python)
&lt;/h2&gt;

&lt;p&gt;Craigslist exposes its categories per city subdomain. Real estate for sale is &lt;code&gt;rea&lt;/code&gt;,&lt;br&gt;
apartments/rentals are &lt;code&gt;apa&lt;/code&gt;. You can request the "by owner" filter and parse the&lt;br&gt;
result cards:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;httpx&lt;/span&gt;
&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="n"&gt;bs4&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;BeautifulSoup&lt;/span&gt;

&lt;span class="c1"&gt;# San Francisco Bay Area, real estate for sale, by owner:
&lt;/span&gt;&lt;span class="n"&gt;url&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;https://sfbay.craigslist.org/search/rea?purveyor=owner&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;
&lt;span class="n"&gt;html&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;httpx&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;url&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;headers&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;User-Agent&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Mozilla/5.0&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt; &lt;span class="n"&gt;timeout&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;30&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="n"&gt;text&lt;/span&gt;
&lt;span class="n"&gt;soup&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nc"&gt;BeautifulSoup&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;html&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;lxml&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;el&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;soup&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;select&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;li.cl-static-search-result&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
    &lt;span class="n"&gt;title&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;el&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;select_one&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;.title&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nf"&gt;get_text&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;strip&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="bp"&gt;True&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="n"&gt;price&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;el&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;select_one&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;.price&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;title&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;—&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;price&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;get_text&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;strip&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="bp"&gt;True&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;price&lt;/span&gt; &lt;span class="k"&gt;else&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;n/a&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That gets you titles and prices. The real value — beds, baths, sqft, photos, the&lt;br&gt;
posting body, FSBO detection and contact availability — lives on each listing's&lt;br&gt;
detail page, so you'd fetch and parse those too.&lt;/p&gt;
&lt;h2&gt;
  
  
  The catch: scale, detail pages &amp;amp; lead scoring
&lt;/h2&gt;

&lt;p&gt;A usable lead list means paging through results, opening every detail page, parsing&lt;br&gt;
the inconsistent attributes, detecting by-owner vs agent, pulling photos and contact&lt;br&gt;
info, and ideally &lt;strong&gt;scoring&lt;/strong&gt; each lead so you work the hot ones first. Doing that&lt;br&gt;
reliably across cities is the part worth automating.&lt;/p&gt;
&lt;h2&gt;
  
  
  The no-code option
&lt;/h2&gt;

&lt;p&gt;The &lt;strong&gt;&lt;a href="https://apify.com/benthepythondev/craigslist-real-estate-scraper" rel="noopener noreferrer"&gt;Craigslist Real Estate Scraper&lt;/a&gt;&lt;/strong&gt;&lt;br&gt;
on Apify does all of it — pick a city, category and the owner-only filter, click Run.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"mode"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"search"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"city"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"sfbay"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"category"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"rea"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"listingType"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"owner"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"minPrice"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;200000&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"maxPrice"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;900000&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"includeLeadScore"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"maxListings"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;100&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Output is one clean row per listing — price, beds, baths, sqft, location, photos,&lt;br&gt;
body text, an FSBO flag, contact availability and a &lt;strong&gt;0–100 AI lead score&lt;/strong&gt; — ready&lt;br&gt;
for a spreadsheet, a CRM, or your outreach tool. It covers rentals too (&lt;code&gt;apa&lt;/code&gt;), and&lt;br&gt;
supports postal-code radius search.&lt;/p&gt;

&lt;h2&gt;
  
  
  Common use cases
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;🎯 Agents&lt;/strong&gt; — find FSBO sellers for listing appointments before competitors do.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;💰 Investors&lt;/strong&gt; — source motivated, un-bid-up sellers for flips and wholesale.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;🏢 Property managers&lt;/strong&gt; — pull rental inventory and benchmark rates by area.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;📊 Market research&lt;/strong&gt; — track pricing and supply trends across cities over time.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  FAQ
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;How do I get FSBO leads specifically?&lt;/strong&gt; Set the listing type to "owner" — it keeps&lt;br&gt;
only by-owner listings and flags + scores each one.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Does it include rentals?&lt;/strong&gt; Yes — both for-sale and rental categories.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Do I need an API key or login?&lt;/strong&gt; No — just a city and your filters.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Can I search a specific area?&lt;/strong&gt; Yes — use a postal code + radius.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Is scraping Craigslist legal?&lt;/strong&gt; It reads publicly available listing data. Use it&lt;br&gt;
responsibly for legitimate lead-gen and follow applicable laws and Craigslist's terms.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Building a real-estate lead pipeline? The &lt;a href="https://apify.com/benthepythondev/craigslist-real-estate-scraper" rel="noopener noreferrer"&gt;Craigslist Real Estate Scraper&lt;/a&gt; handles the scraping. See also the &lt;a href="https://apify.com/benthepythondev/fsbo-real-estate-scraper" rel="noopener noreferrer"&gt;FSBO Real Estate Scraper&lt;/a&gt; and &lt;a href="https://apify.com/benthepythondev/zumper-rental-scraper" rel="noopener noreferrer"&gt;Zumper Rental Scraper&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>webscraping</category>
      <category>realestate</category>
      <category>leadgeneration</category>
      <category>python</category>
    </item>
    <item>
      <title>How to Scrape UK Property Listings from OnTheMarket — Python + No-Code</title>
      <dc:creator>Ben</dc:creator>
      <pubDate>Sat, 27 Jun 2026 09:21:40 +0000</pubDate>
      <link>https://dev.to/benthepythondev/how-to-scrape-uk-property-listings-from-onthemarket-python-no-code-5a8b</link>
      <guid>https://dev.to/benthepythondev/how-to-scrape-uk-property-listings-from-onthemarket-python-no-code-5a8b</guid>
      <description>&lt;p&gt;If you want &lt;strong&gt;UK property data&lt;/strong&gt;, everyone fights over Rightmove and Zoopla — both of&lt;br&gt;
which block hard. &lt;strong&gt;OnTheMarket&lt;/strong&gt;, Britain's third major portal, is far more&lt;br&gt;
accessible and carries the same agent-listed for-sale and to-rent inventory. Better&lt;br&gt;
still, it's a modern site that ships its listing data as structured JSON inside the&lt;br&gt;
page, so you get clean, typed fields without brittle HTML scraping.&lt;/p&gt;
&lt;h2&gt;
  
  
  Why OnTheMarket?
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Accessible&lt;/strong&gt; — unlike Rightmove/Zoopla, it doesn't immediately wall off basic
requests, so you don't need heavy residential proxies for modest runs.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Structured data built in&lt;/strong&gt; — it's a Next.js site that embeds the full results set
as JSON, so fields come out typed and consistent.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;For sale and to rent&lt;/strong&gt; — the same source covers both, nationwide.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;
  
  
  Read the embedded JSON (Python)
&lt;/h2&gt;

&lt;p&gt;OnTheMarket renders results into a &lt;code&gt;__NEXT_DATA__&lt;/code&gt; script tag. Parse it instead of&lt;br&gt;
scraping cards:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;httpx&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;json&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;re&lt;/span&gt;

&lt;span class="n"&gt;html&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;httpx&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;https://www.onthemarket.com/for-sale/property/london/&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
                 &lt;span class="n"&gt;headers&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;User-Agent&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Mozilla/5.0&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt; &lt;span class="n"&gt;timeout&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;30&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="n"&gt;text&lt;/span&gt;
&lt;span class="n"&gt;data&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;json&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;loads&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;re&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;search&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sa"&gt;r&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;&amp;lt;script id=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;__NEXT_DATA__&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;[^&amp;gt;]*&amp;gt;(.*?)&amp;lt;/script&amp;gt;&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;html&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;re&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;S&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nf"&gt;group&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
&lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;p&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;data&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;props&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;][&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;initialReduxState&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;][&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;results&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;][&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;list&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;]:&lt;/span&gt;
    &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;p&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;property-title&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;—&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;p&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;price&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;—&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;p&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;address&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;])&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Each listing carries price, bedrooms, property type, address, agent and even&lt;br&gt;
latitude/longitude. Pagination is just &lt;code&gt;?page=2&lt;/code&gt;, &lt;code&gt;?page=3&lt;/code&gt;, …&lt;/p&gt;
&lt;h2&gt;
  
  
  The catch: filters, paging &amp;amp; clean fields
&lt;/h2&gt;

&lt;p&gt;A useful dataset means resolving location slugs, threading price/bedroom filters,&lt;br&gt;
paging through thousands of results, mapping the raw keys into clean fields&lt;br&gt;
(&lt;code&gt;price_value&lt;/code&gt; as a number, geo-coordinates, agent contact) and skipping the promo&lt;br&gt;
cards mixed into the list. That's the part worth automating.&lt;/p&gt;
&lt;h2&gt;
  
  
  The no-code option
&lt;/h2&gt;

&lt;p&gt;The &lt;strong&gt;&lt;a href="https://apify.com/benthepythondev/onthemarket-scraper" rel="noopener noreferrer"&gt;OnTheMarket Scraper&lt;/a&gt;&lt;/strong&gt; on&lt;br&gt;
Apify does it — pick for-sale or to-rent, a location, optional price/bedroom filters,&lt;br&gt;
click Run.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"listingType"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"for-sale"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"location"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"manchester"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"minPrice"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;200000&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"maxPrice"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;500000&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"minBedrooms"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"maxResults"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;200&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Output is one clean row per property — price (text + numeric), bedrooms, type,&lt;br&gt;
address, agent name &amp;amp; phone, latitude/longitude, features, image and URL — ready for&lt;br&gt;
mapping, dashboards or a property product.&lt;/p&gt;

&lt;h2&gt;
  
  
  Common use cases
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;UK market analysis&lt;/strong&gt; — track asking prices and supply by area, type and beds.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Lead generation&lt;/strong&gt; — build estate-agent and listing lead lists with contacts.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Proptech &amp;amp; portals&lt;/strong&gt; — power a search product or alerting tool with fresh listings.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Investment sourcing&lt;/strong&gt; — filter by price/beds/location, then map with the geo data.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  FAQ
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Do I need an API key?&lt;/strong&gt; No — just a location (or a search URL) and your filters.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;For sale and to rent?&lt;/strong&gt; Both — set &lt;code&gt;listingType&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Do listings include geo-coordinates?&lt;/strong&gt; Yes — every listing has latitude/longitude.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Is it legal?&lt;/strong&gt; You're reading publicly available listing data. Use it responsibly&lt;br&gt;
and within applicable laws and OnTheMarket's terms.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Building something with UK property data? The &lt;a href="https://apify.com/benthepythondev/onthemarket-scraper" rel="noopener noreferrer"&gt;OnTheMarket Scraper&lt;/a&gt; handles it. See also the &lt;a href="https://apify.com/benthepythondev/redfin-scraper" rel="noopener noreferrer"&gt;Redfin Scraper&lt;/a&gt; and &lt;a href="https://apify.com/benthepythondev/craigslist-real-estate-scraper" rel="noopener noreferrer"&gt;Craigslist Real Estate Scraper&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>webscraping</category>
      <category>realestate</category>
      <category>python</category>
      <category>api</category>
    </item>
    <item>
      <title>How to Scrape Mastodon (Hashtags, Accounts &amp; Trends) — Python + No-Code</title>
      <dc:creator>Ben</dc:creator>
      <pubDate>Sat, 27 Jun 2026 09:18:48 +0000</pubDate>
      <link>https://dev.to/benthepythondev/how-to-scrape-mastodon-hashtags-accounts-trends-python-no-code-1cmg</link>
      <guid>https://dev.to/benthepythondev/how-to-scrape-mastodon-hashtags-accounts-trends-python-no-code-1cmg</guid>
      <description>&lt;p&gt;&lt;strong&gt;Mastodon&lt;/strong&gt; is the largest open, federated social network — millions of active users&lt;br&gt;
across thousands of independent servers. And like the rest of the fediverse, its data&lt;br&gt;
is refreshingly easy to get: every instance exposes a &lt;strong&gt;public REST API, no login&lt;br&gt;
required&lt;/strong&gt; for public content. If you do social listening or trend research, Mastodon&lt;br&gt;
is a clean, ad-free, bot-light signal that almost no one is mining.&lt;/p&gt;
&lt;h2&gt;
  
  
  Why Mastodon?
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Public API on every instance&lt;/strong&gt; — &lt;code&gt;mastodon.social&lt;/code&gt;, &lt;code&gt;mas.to&lt;/code&gt;, &lt;code&gt;fosstodon.org&lt;/code&gt;
and thousands more, all with the same endpoints, no key.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Federated reach&lt;/strong&gt; — query one instance or the broader federated timeline it sees.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Clean signal&lt;/strong&gt; — real communities, hashtags and trends, with engagement counts.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;
  
  
  Hashtag posts (Python, no auth)
&lt;/h2&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;httpx&lt;/span&gt;
&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="n"&gt;bs4&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;BeautifulSoup&lt;/span&gt;

&lt;span class="n"&gt;base&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;https://mastodon.social&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;
&lt;span class="n"&gt;r&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;httpx&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;base&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s"&gt;/api/v1/timelines/tag/bitcoin&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;params&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;limit&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;40&lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt; &lt;span class="n"&gt;timeout&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;30&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;s&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;r&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;json&lt;/span&gt;&lt;span class="p"&gt;():&lt;/span&gt;
    &lt;span class="n"&gt;text&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nc"&gt;BeautifulSoup&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;s&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;content&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;lxml&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nf"&gt;get_text&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt; &lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;strip&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="bp"&gt;True&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;text&lt;/span&gt;&lt;span class="p"&gt;[:&lt;/span&gt;&lt;span class="mi"&gt;80&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;—&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;s&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;favourites_count&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;favs&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;Post bodies are HTML, so strip the tags for clean text. A user's posts come from&lt;br&gt;
&lt;code&gt;/api/v1/accounts/lookup?acct=Gargron&lt;/code&gt; → &lt;code&gt;/api/v1/accounts/{id}/statuses&lt;/code&gt;; the public&lt;br&gt;
or federated firehose from &lt;code&gt;/api/v1/timelines/public&lt;/code&gt;; and what's hot right now from&lt;br&gt;
&lt;code&gt;/api/v1/trends/statuses&lt;/code&gt;.&lt;/p&gt;
&lt;h2&gt;
  
  
  The catch: boosts, paging &amp;amp; HTML
&lt;/h2&gt;

&lt;p&gt;Pagination uses &lt;code&gt;max_id&lt;/code&gt; (older items); boosts (reblogs) carry their real content in a&lt;br&gt;
nested &lt;code&gt;reblog&lt;/code&gt; object you need to unwrap; and every post body is HTML to clean. Doing&lt;br&gt;
that across hashtags or accounts is the part worth automating.&lt;/p&gt;
&lt;h2&gt;
  
  
  The no-code option
&lt;/h2&gt;

&lt;p&gt;The &lt;strong&gt;&lt;a href="https://apify.com/benthepythondev/mastodon-scraper" rel="noopener noreferrer"&gt;Mastodon Scraper&lt;/a&gt;&lt;/strong&gt; on Apify&lt;br&gt;
handles it — pick an instance and a mode (hashtag, account, public, trends, profile),&lt;br&gt;
click Run.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"mode"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"hashtag"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"instance"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"mastodon.social"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"hashtags"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;"ai"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"bitcoin"&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"maxItems"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;500&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Output is one clean row per post — text (HTML stripped), date, language, boosts,&lt;br&gt;
favourites, replies, hashtags, media URLs and author — ready for a spreadsheet, a&lt;br&gt;
database, or an LLM.&lt;/p&gt;

&lt;h2&gt;
  
  
  Common use cases
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Social listening&lt;/strong&gt; — track a topic or brand across the whole fediverse.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Trend &amp;amp; sentiment analysis&lt;/strong&gt; — feed hashtag/trend streams into an LLM.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Open-social research&lt;/strong&gt; — study communities and how content federates.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Influencer &amp;amp; audience research&lt;/strong&gt; — profile stats and posting activity.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  FAQ
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Do I need an account or API key?&lt;/strong&gt; No for hashtags, accounts, public timelines and&lt;br&gt;
trends. Only keyword search needs an access token.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Which instance?&lt;/strong&gt; Any — &lt;code&gt;mastodon.social&lt;/code&gt; is the largest and sees most of the&lt;br&gt;
federated timeline; niche servers are great for niche communities.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Can I scrape remote accounts?&lt;/strong&gt; Yes — use the full &lt;code&gt;user@instance&lt;/code&gt; handle.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Is it legal?&lt;/strong&gt; You're reading publicly available data via Mastodon's own public API.&lt;br&gt;
Use it responsibly and within each instance's terms.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Building something with social data? The &lt;a href="https://apify.com/benthepythondev/mastodon-scraper" rel="noopener noreferrer"&gt;Mastodon Scraper&lt;/a&gt; handles the API for you. See also the &lt;a href="https://apify.com/benthepythondev/bluesky-scraper" rel="noopener noreferrer"&gt;Bluesky Scraper&lt;/a&gt; and &lt;a href="https://apify.com/benthepythondev/lemmy-scraper" rel="noopener noreferrer"&gt;Lemmy Scraper&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>webscraping</category>
      <category>mastodon</category>
      <category>fediverse</category>
      <category>python</category>
    </item>
    <item>
      <title>How to Scrape Lemmy — the Federated Reddit Alternative (Python + No-Code)</title>
      <dc:creator>Ben</dc:creator>
      <pubDate>Sat, 27 Jun 2026 09:16:06 +0000</pubDate>
      <link>https://dev.to/benthepythondev/how-to-scrape-lemmy-the-federated-reddit-alternative-python-no-code-3fo4</link>
      <guid>https://dev.to/benthepythondev/how-to-scrape-lemmy-the-federated-reddit-alternative-python-no-code-3fo4</guid>
      <description>&lt;p&gt;When Reddit locked down its API, a chunk of its communities moved to &lt;strong&gt;Lemmy&lt;/strong&gt; — an&lt;br&gt;
open, federated Reddit alternative. The best part for anyone who needs discussion&lt;br&gt;
data: Lemmy's API is &lt;strong&gt;completely public, no key, no login&lt;/strong&gt;, and it returns clean&lt;br&gt;
JSON with Reddit-style metrics (score, upvotes, downvotes, comments). If you build&lt;br&gt;
RAG datasets, do social listening, or track communities, Lemmy is an easy, untapped&lt;br&gt;
source.&lt;/p&gt;
&lt;h2&gt;
  
  
  Why Lemmy?
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Open API&lt;/strong&gt; — every instance (lemmy.world, lemmy.ml, beehaw.org, …) exposes
&lt;code&gt;/api/v3/&lt;/code&gt; with no authentication for public data.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Federated&lt;/strong&gt; — query one instance or the whole network; reach cross-instance
communities like &lt;code&gt;technology@lemmy.world&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Reddit-shaped data&lt;/strong&gt; — posts, comments, communities, scores and vote counts, so
it slots straight into anything you built for Reddit.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;
  
  
  Front-page or community posts (Python)
&lt;/h2&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;httpx&lt;/span&gt;

&lt;span class="n"&gt;base&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;https://lemmy.world&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;
&lt;span class="c1"&gt;# front page (whole federated network), sorted Hot:
&lt;/span&gt;&lt;span class="n"&gt;r&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;httpx&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;base&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s"&gt;/api/v3/post/list&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
              &lt;span class="n"&gt;params&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;sort&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Hot&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;type_&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;All&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;limit&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;50&lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt; &lt;span class="n"&gt;timeout&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;30&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;it&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;r&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;json&lt;/span&gt;&lt;span class="p"&gt;()[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;posts&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;]:&lt;/span&gt;
    &lt;span class="n"&gt;p&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;c&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;it&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;post&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt; &lt;span class="n"&gt;it&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;counts&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
    &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;p&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;name&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;—&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;c&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;score&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;pts,&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;c&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;comments&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;comments&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;Want a specific community? Add &lt;code&gt;community_name=technology&lt;/code&gt;. Want comments? Hit&lt;br&gt;
&lt;code&gt;/api/v3/comment/list&lt;/code&gt;. Want to find communities? &lt;code&gt;/api/v3/community/list&lt;/code&gt; or&lt;br&gt;
&lt;code&gt;/api/v3/search?type_=Communities&lt;/code&gt;.&lt;/p&gt;
&lt;h2&gt;
  
  
  The catch: pagination &amp;amp; normalization
&lt;/h2&gt;

&lt;p&gt;Lemmy paginates with &lt;code&gt;page=N&lt;/code&gt; (up to 50 per page), and each item nests &lt;code&gt;post&lt;/code&gt;,&lt;br&gt;
&lt;code&gt;creator&lt;/code&gt;, &lt;code&gt;community&lt;/code&gt; and &lt;code&gt;counts&lt;/code&gt; objects you'll want flattened into one clean row.&lt;br&gt;
Across multiple communities and sort windows, that's the part worth automating.&lt;/p&gt;
&lt;h2&gt;
  
  
  The no-code option
&lt;/h2&gt;

&lt;p&gt;The &lt;strong&gt;&lt;a href="https://apify.com/benthepythondev/lemmy-scraper" rel="noopener noreferrer"&gt;Lemmy Scraper&lt;/a&gt;&lt;/strong&gt; on Apify does&lt;br&gt;
it for you — pick a mode (posts, community, search, comments, communities), an&lt;br&gt;
instance and a sort order, click Run.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"mode"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"community"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"instance"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"lemmy.world"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"communities"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;"technology"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"asklemmy"&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"sort"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"TopWeek"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"maxItems"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;500&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Output is one clean row per post (or comment/community) — title, body, link, score,&lt;br&gt;
upvotes, downvotes, comment count, community, author and URLs — ready for a&lt;br&gt;
spreadsheet, a database, or an LLM.&lt;/p&gt;

&lt;h2&gt;
  
  
  Common use cases
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Reddit-migration research&lt;/strong&gt; — follow communities and audiences that left Reddit.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Community &amp;amp; topic monitoring&lt;/strong&gt; — track discussions across the fediverse.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;RAG / LLM datasets&lt;/strong&gt; — clean, open, license-friendly discussion data.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Trend &amp;amp; sentiment analysis&lt;/strong&gt; — feed posts and comments into an LLM.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  FAQ
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Do I need an account or API key?&lt;/strong&gt; No — public posts, comments and communities work&lt;br&gt;
with no login.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Which instance should I use?&lt;/strong&gt; Any. &lt;code&gt;lemmy.world&lt;/code&gt; is the largest; with&lt;br&gt;
&lt;code&gt;listingType: All&lt;/code&gt; it sees most of the federated network.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Can I scrape a community on another instance?&lt;/strong&gt; Yes — use &lt;code&gt;community@instance&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Is it legal?&lt;/strong&gt; You're reading publicly available data via Lemmy's own public API.&lt;br&gt;
Use it responsibly and within each instance's terms.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Building something with discussion data? The &lt;a href="https://apify.com/benthepythondev/lemmy-scraper" rel="noopener noreferrer"&gt;Lemmy Scraper&lt;/a&gt; handles the API so you can focus on the product. See also the &lt;a href="https://apify.com/benthepythondev/reddit-scraper" rel="noopener noreferrer"&gt;Reddit Scraper&lt;/a&gt; and &lt;a href="https://apify.com/benthepythondev/bluesky-scraper" rel="noopener noreferrer"&gt;Bluesky Scraper&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>webscraping</category>
      <category>lemmy</category>
      <category>reddit</category>
      <category>python</category>
    </item>
  </channel>
</rss>
