LocalHarvest Scraper - Farms, Farmers Markets & CSAs
Pricing
from $3.00 / 1,000 results
LocalHarvest Scraper - Farms, Farmers Markets & CSAs
Scrape LocalHarvest.org: farms, farmers markets, CSAs, U-Pick, and farm stands. Search by location and type, or fetch listings by URL. Get addresses, coordinates, products, contact info, and ratings.
Pricing
from $3.00 / 1,000 results
Rating
0.0
(0)
Developer
Crawler Bros
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
6 days ago
Last modified
Categories
Share
Scrape LocalHarvest.org — the largest US directory of farms, farmers markets, CSAs (Community Supported Agriculture), U-Pick farms, farm stands, and other local food sources. Search any location and listing type and get names, addresses, GPS coordinates, descriptions, products/crops, ratings, and contact info. Optionally follow through to each listing's full profile page for phone, website, social links, farming practices, CSA share details, and market schedules. No login, no cookies, no API key required.
What this actor does
- Two modes:
search(location + listing type + keyword) andbyUrl(direct listing profile URLs) - 9 listing types — Farms, Farmers Markets, CSA, U-Pick / Pick-your-own, Farm Stands, Wholesale, Restaurants (farm-to-table), Groceries / Co-ops, and Others — plus "All types"
- Search by zip code, city + state, or full state name — or pick any of the 50 US states + DC from a dropdown
- Free-text keyword search — find listings by product ("honey", "grass-fed beef"), name, or practice
- Sort by relevance, rating, or name (A-Z)
- Filter by minimum rating (1-5 stars), SNAP/EBT-accepted only, or Certified Organic only
- Rich listing profiles — phone, website, Facebook/Instagram/Twitter/YouTube links, full street address, products & crops by season, farming practices, association memberships, CSA share pricing, and farmers-market schedules
- Precise GPS coordinates on every search result, read directly from LocalHarvest's own map data
- Empty fields are omitted — you only ever see fields that were actually found for a listing
Output per listing
name— listing namelistingId— LocalHarvest's own numeric listing IDlistingType— general category (Farms / Farmers Markets / CSA / U-Pick / Farm Stands / Wholesale / Restaurants / Groceries / Others)badge— LocalHarvest's specific listing badge (e.g. "Family Farm", "Community Farm", "Farmers Market")description— listing description (short snippet in search results; full text when profile fetched)street,city,state,zipCodelatitude,longitude— GPS coordinates (search results)rating— 1-5 stars,reviewCount— number of written reviews (from the listing's own profile page, when it has reviews)snapEbtAccepted,isCertifiedOrganic,isSupporter— badges shown on the listing (search results);isCertifiedOrganicmay also be set from the "Farming Practices" list when a profile is fetchedphone,website(when profile fetched)facebookUrl,instagramUrl,twitterUrl,youtubeUrl— social links the listing has published (when profile fetched)products[]— products and crops offered, aggregated across all seasons (when profile fetched)practices[]— farming practices (e.g. "naturally grown", "certified organic") (when profile fetched)associations[]— association memberships (when profile fetched)marketChannels[]— how the listing sells (CSA, Farm Stand, Farmers Market, Wholesale...) (when profile fetched)csaSeason,csaType,csaSince,csaNumShares,csaSharePrices— CSA share program details, when the listing offers a CSA (when profile fetched)marketSchedule— days/hours, for farmers markets and farm stands (when profile fetched)farmStandSchedule— farm-stand-specific schedule/location notes (when profile fetched)images[]— listing photo gallery (when profile fetched)nearbyCities[]— nearby city links LocalHarvest surfaces on the profile (when profile fetched)eventsUrl— link to upcoming local events for the listing's area (when profile fetched)lastUpdated— when the listing owner last updated their profile (when profile fetched)imageUrl— primary listing photosearchType,searchLocation,searchKeyword— the search parameters used (mode=search)sourceUrl— canonical LocalHarvest listing URLrecordType: "listing",scrapedAt
Input
| Field | Type | Default | Description |
|---|---|---|---|
mode | string (select) | search | search (location + type + keyword) or byUrl (fetch by URL) |
location | string | California | Zip code, city + state, or state name to search in (mode=search) |
state | string (select) | – | Pick one of the 50 US states + DC, overrides location (mode=search) |
listingType | string (select) | farms | One of the 9 listing types, or all |
keyword | string | – | Free-text keyword (product, name, practice) |
minRating | integer | 0 (no minimum) | Only return listings rated at least 1-5 stars |
snapEbtOnly | boolean | false | Only return listings that display LocalHarvest's SNAP/EBT badge |
organicOnly | boolean | false | Only return listings that display LocalHarvest's Certified Organic badge |
sortBy | string (select) | relevance | relevance / rating (highest first) / name (A-Z) — applied client-side across the fetched batch |
fetchDetails | boolean | false | Also visit each listing's profile page for richer data (slower) |
listingUrls | array | – | LocalHarvest listing URLs to fetch directly (mode=byUrl) |
maxItems | int | 20 | Hard cap on returned records (1-500) |
Example: farms in California
{"mode": "search","state": "California","listingType": "farms","maxItems": 20}
Example: farmers markets near a zip code, with full profiles
{"mode": "search","location": "50010","listingType": "farmersMarkets","fetchDetails": true,"maxItems": 30}
Example: highest-rated CSAs in Iowa that accept SNAP/EBT
{"mode": "search","state": "Iowa","listingType": "csa","snapEbtOnly": true,"sortBy": "rating","maxItems": 50}
Example: Certified Organic farms in Oregon
{"mode": "search","state": "Oregon","listingType": "farms","organicOnly": true,"maxItems": 30}
Example: keyword search for honey producers nationwide
{"mode": "search","keyword": "honey","listingType": "all","maxItems": 40}
Example: fetch specific listing profiles
{"mode": "byUrl","listingUrls": [{ "url": "https://www.localharvest.org/blue-gate-farm-M11943" }]}
Use cases
- Local food sourcing — build a list of farms, CSAs, and markets near a location for personal or business sourcing
- Market research — measure the density of farms, CSAs, or farmers markets by state or region
- Directory aggregation — feed structured local-food data into your own food-sourcing or farm-to-table product
- CSA & farmers-market discovery — compare share pricing, season length, and product offerings across CSAs
- Nonprofit / food-access research — filter for SNAP/EBT-accepting listings to map food-access coverage
Limitations
- Occasional connectivity slowness to LocalHarvest from Apify's datacenter IPs. LocalHarvest's servers are sometimes slow to respond to requests from cloud datacenter IP ranges. The actor automatically retries with exponential backoff and rotates through Apify's free AUTO proxy on any failure, and every run in testing eventually succeeded with full results -- but a run may take a few minutes longer than expected during a slow window. No paid proxy tier is used at any point.
latitude/longitudeare only available for city/zip-level searches, not statewide searches. LocalHarvest only embeds precise per-listing coordinates in the page for narrower searches; a statewide search (e.g.state: "California") instead renders an aggregated density heatmap with no per-listing coordinates in the page HTML. Search narrower (a zip code or city name) to get coordinates on every record, or usefetchDetails/mode: "byUrl"for other listing fields that don't depend on the map.- An unrecognized
locationvalue falls back to LocalHarvest's own IP-based default location rather than always returning zero results -- this is upstream behavior (confirmed: the same nonsense location string returns "No Results Found" from some client IPs and real nearby listings from others). The actor always returns whatever real data LocalHarvest's own page renders; it never fabricates records. - Some
imageUrl/images[]values are served by LocalHarvest's own CDN (lh-images.us-east-1.linodeobjects.com) with an inaccurateContent-Type: application/unknownheader, even though the response is a genuine JPEG/PNG (verified by file signature). This is an upstream CDN configuration quirk, not a broken link -- the image loads correctly in any browser or image viewer. sortByis applied client-side. LocalHarvest's search-results pages don't expose a server-side sort parameter, sorating/namesorting is applied across the batch of records this run actually fetched, not the entire listing type.minRatingandsnapEbtOnlyare applied client-side. A listing with no reviews yet is only excluded byminRating(which requires a rating to compare against); most listings on LocalHarvest have no reviews, so a highminRatingwill sharply narrow results.- Ratings and review counts require at least one review. LocalHarvest only publishes a listing's structured rating data once it has received a review; listings with none simply omit
rating/reviewCountrather than showing a zero. ty=5("Shop"), Photo Albums, Events, and Products are not exposed as listing types. These upstream search verticals return online-store items, photo galleries, calendar events, and a crop encyclopedia respectively — not location-based business listings — so they're out of scope for this directory-style actor.- CSA share details, market schedules, products, and social links require
fetchDetails: true(search mode) ormode: "byUrl". Plain search results include name, type, location, coordinates, description snippet, and badges only.
FAQ
What data source does this actor use? It reads the publicly available search and listing-profile pages on LocalHarvest.org, the largest US directory of farms, farmers markets, and local food sources. No account or API key is needed.
Is this affiliated with LocalHarvest? No. This is an independent, third-party actor that reads publicly accessible pages.
Why do some listings have no rating, phone, or products? LocalHarvest only shows a rating once a listing has received at least one review, and only shows contact/product details the listing owner has provided. Fields with no data are simply omitted from the record rather than shown as empty or null.
Can I search a whole state instead of a single city or zip code?
Yes — set state to any of the 50 US states (or DC); it takes priority over location. You can also just type a state name (e.g. "Iowa") directly into location.
What's the difference between listingType and badge?
listingType is the general category this actor searches by (Farms, Farmers Markets, CSA, etc.). badge is LocalHarvest's own, more specific label shown on the listing — for farms this is often a sub-type like "Family Farm" or "Community Farm" rather than the plain word "Farms".
How accurate are the GPS coordinates?
latitude/longitude come directly from LocalHarvest's own search-results map data, which is precise to the individual listing (not just its city).
What's the difference between snapEbtOnly and organicOnly?
Both filter on badges LocalHarvest displays on the listing itself: snapEbtOnly keeps only listings showing the SNAP/EBT-accepted badge, organicOnly keeps only listings showing the Certified Organic badge (from the search-card badge or, when fetchDetails/byUrl is used, the listing's own "Farming Practices" list). Both can be combined with each other and with minRating.
Why is fetchDetails off by default?
Fetching each listing's full profile page requires one extra request per result, which is slower. Turn it on when you need phone, website, social links, products/crops, farming practices, CSA share details, or market schedules.
Does this actor need a proxy or login? No — LocalHarvest's search and profile pages are served without any anti-bot challenge, so this actor runs entirely on Apify's free plan with no proxy and no credentials required from you (it uses Apify's free AUTO proxy automatically only if the datacenter IP is ever rate-limited).
What does CSA share pricing (csaSharePrices) mean?
It's the listing's own published pricing for a CSA (Community Supported Agriculture) membership/share, exactly as written on their LocalHarvest profile — format varies by farm (e.g. "$700/season", "$25/week").