LocalHarvest Scraper - Farms, Farmers Markets & CSAs avatar

LocalHarvest Scraper - Farms, Farmers Markets & CSAs

Pricing

from $3.00 / 1,000 results

Go to Apify Store
LocalHarvest Scraper - Farms, Farmers Markets & CSAs

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

Crawler Bros

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

6 days ago

Last modified

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) and byUrl (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 name
  • listingId — LocalHarvest's own numeric listing ID
  • listingType — 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, zipCode
  • latitude, 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); isCertifiedOrganic may also be set from the "Farming Practices" list when a profile is fetched
  • phone, 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 photo
  • searchType, searchLocation, searchKeyword — the search parameters used (mode=search)
  • sourceUrl — canonical LocalHarvest listing URL
  • recordType: "listing", scrapedAt

Input

FieldTypeDefaultDescription
modestring (select)searchsearch (location + type + keyword) or byUrl (fetch by URL)
locationstringCaliforniaZip code, city + state, or state name to search in (mode=search)
statestring (select)Pick one of the 50 US states + DC, overrides location (mode=search)
listingTypestring (select)farmsOne of the 9 listing types, or all
keywordstringFree-text keyword (product, name, practice)
minRatinginteger0 (no minimum)Only return listings rated at least 1-5 stars
snapEbtOnlybooleanfalseOnly return listings that display LocalHarvest's SNAP/EBT badge
organicOnlybooleanfalseOnly return listings that display LocalHarvest's Certified Organic badge
sortBystring (select)relevancerelevance / rating (highest first) / name (A-Z) — applied client-side across the fetched batch
fetchDetailsbooleanfalseAlso visit each listing's profile page for richer data (slower)
listingUrlsarrayLocalHarvest listing URLs to fetch directly (mode=byUrl)
maxItemsint20Hard 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/longitude are 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 use fetchDetails/mode: "byUrl" for other listing fields that don't depend on the map.
  • An unrecognized location value 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 inaccurate Content-Type: application/unknown header, 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.
  • sortBy is applied client-side. LocalHarvest's search-results pages don't expose a server-side sort parameter, so rating/name sorting is applied across the batch of records this run actually fetched, not the entire listing type.
  • minRating and snapEbtOnly are applied client-side. A listing with no reviews yet is only excluded by minRating (which requires a rating to compare against); most listings on LocalHarvest have no reviews, so a high minRating will 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/reviewCount rather 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) or mode: "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").