· 14 min read
Patch Scraper: Up to 1,000 Free Results a Month (2026)
Each news article record carries 18 fields, including headline, summary, authorUrl, publishedDate, category, town, and state. Results cost $0.005 per result ($5.00 per 1,000 results) on the free plan, which includes $5.00 of monthly usage with no credit card. This data pipeline is designed for analysts, local news aggregators, and media monitoring teams; it is not for anyone who requires full article body text, which the records do not include.
Try it: open Patch Scraper on Apify, sign in on the free plan and run the prefilled example.
Can you try Patch Scraper before paying?
Yes. Apify's free plan includes $5.00 of prepaid usage every month and asks for no credit card. At $0.005 per result, that covers up to 1,000 results of Patch Scraper a month, before run-start charges and platform usage.
Patch Scraper was last updated on 2026-08-18. It is one of 1,725 Actors CrawlerBros publishes on Apify, which together have 686,270 lifetime public runs and an average rating of 4.63 out of 5 across 416 reviews.
What does it cost to run Patch Scraper?
Each result costs $0.005 on Apify's free plan, which is $5.00 per 1,000 results. Starting a run is charged separately at $0.005 per GB of Actor memory. Apify also bills the platform usage each run consumes, at the rates of your Apify plan, on top of these charges.
| Apify plan | Per result | Per 1,000 results |
|---|---|---|
| FREE | $0.005 | $5.00 |
| BRONZE | $0.00433 | $4.33 |
| SILVER | $0.00367 | $3.67 |
| GOLD | $0.003 | $3.00 |
| PLATINUM | $0.003 | $3.00 |
| DIAMOND | $0.003 | $3.00 |
Dataset charges scale directly with maxItems, which dictates how many items are added to your dataset per run. To verify record schema cheaply, run a test with maxItems set to a low number like 5 before running broader searches.
How do you run Patch Scraper from the API?
The schema marks 1 of its 17 controls as required: mode. The payload below uses the schema's own prefilled values, so it runs as written once you substitute your API token.
Call the synchronous endpoint to start a run and receive dataset items in one request:
curl -X POST "https://api.apify.com/v2/acts/crawlerbros~patch-scraper/run-sync-get-dataset-items?token=$APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{"mode":"search","searchQuery":"city council","authorName":"","tagName":""}'
The same run from Python, using the official client:
from apify_client import ApifyClient
client = ApifyClient("<YOUR_APIFY_TOKEN>")
run_input = {
"mode": "search",
"searchQuery": "city council",
"authorName": "",
"tagName": ""
}
run = client.actor("crawlerbros~patch-scraper").call(run_input=run_input)
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
print(item)
And from Node.js:
import { ApifyClient } from 'apify-client'
const client = new ApifyClient({ token: '<YOUR_APIFY_TOKEN>' })
const input = {
"mode": "search",
"searchQuery": "city council",
"authorName": "",
"tagName": ""
}
const run = await client.actor('crawlerbros~patch-scraper').call(input)
const { items } = await client.dataset(run.defaultDatasetId).listItems()
console.log(items)
The synchronous endpoint holds the connection open until the run finishes, which is convenient for small batches and wrong for large ones. For anything long running, start the run asynchronously and poll, or attach a webhook, so a dropped connection does not cost you the results.
Which Patch Scraper inputs matter, and which can you skip?
The required input is mode, which specifies whether to run a keyword search, browse by town or category, or retrieve events and classifieds. When setting mode to byTown, regionSlug and townSlug must also be supplied.
mode(string): What to fetch from Patch.com. Default:"search".searchQuery(string): Free-text keyword to search for (mode=search; also applies as a keyword filter on mode=events/classifieds). Leave empty on other modes to browse without a keyword filter, or leave empty on mode=search to browse the newest articles matching the other filters below.authorName(string): Exact byline/reporter/poster name (required for mode=byAuthor; on any other mode -- including events/classifieds -- it's applied as an extra filter, e.g. combine mode=search + searchQuery + authorName to search one reporter's own articles). Find it in theauthorfield of any article/event/classified this actor returns, e.g. "Eric Heyl".tagName(string): Exact editorial tag (required for mode=byTag; on mode=search/byTown/byCategory/byAuthor it's applied as an extra filter, e.g. combine mode=byCategory + category + tagName to browse one category narrowed to a tag). Find it in thetagsfield of any article this actor returns, e.g. "Back To School". Only a minority of articles carry tags, so run another mode first to discover one. Not applicable to mode=events/classifieds -- Patch doesn't tag those content types.regionSlug(string): US state to scope results to (required for mode=byTown; optional scope filter on every other mode, including events/classifieds). Leave as "(any state)" for nationwide results. Default:"".townSlug(string): Patch town/city URL slug (required for mode=byTown; requires regionSlug too). Find it in a Patch URL, e.g. patch.com/california/santamonica -> "santamonica". Example: "santamonica" (with regionSlug=california). Default:"".category(string): News category/topic to filter by (required for mode=byCategory; optional filter on mode=search/byTown/byAuthor/byTag). Not applicable to mode=events/classifieds -- useclassifiedCategoryfor mode=classifieds instead. Default:"".classifiedCategory(string): Classifieds category to filter by (mode=classifieds only; a completely separate value set fromcategory, which is news-only). Leave as "(any category)" to browse every classified category. Default:"".sortBy(string): Order of results. "Nearest first" requires bothnearLat/nearLngAND mode=search/byTown/byCategory/byAuthor/byTag (news); otherwise it falls back to Relevance. "Soonest event first" requires mode=events; on any other mode it also falls back to Relevance. Default:"relevance".publishedAfter(string): Only include articles/events/classifieds posted to Patch on or after this date (i.e. listing date, not an event's own occurrence date -- seeeventDateAfterfor that). Format: YYYY-MM-DD. Combine withpublishedBeforefor a date range.publishedBefore(string): Only include articles/events/classifieds posted to Patch on or before this date. Format: YYYY-MM-DD. Combine withpublishedAfterfor a date range.eventDateAfter(string): mode=events only. Only include events occurring on or after this date (the event's own date, not when it was posted to Patch -- seepublishedAfterfor that). Format: YYYY-MM-DD. Combine witheventDateBeforefor a date range, e.g. "what's happening this weekend".
The other 5 controls, with their defaults, are listed in the input schema on Patch Scraper on Apify.
Fixed-choice controls: mode accepts search (Search by keyword), byTown (Browse latest news for a town/city), byCategory (Browse by category), byAuthor (Browse articles by author/reporter), byTag (Browse articles by editorial tag), events (Browse local events (calendar)), classifieds (Browse local classifieds (marketplace listings)); regionSlug accepts 53 values (default ""), including "" ((any state - nationwide)), alabama, alaska, arizona; category accepts 22 values (default ""), including "" ((any category)), around-town (Community Corner), arts-entertainment (Arts & Entertainment), bulletinboard (Neighbor News); classifiedCategory accepts 12 values (default ""), including "" ((any category)), announcements, for-sale (For Sale), free-stuff (Free Stuff); sortBy accepts relevance, newest (Newest first), oldest (Oldest first), nearest (Nearest first (requires nearLat/nearLng, news modes only)), eventDate (Soonest event first (requires mode=events)).
What does Patch Scraper return?
Output items provide structured metadata including headlines, summaries, bylines, publish dates, town locations, and image URLs. Records do not contain full article body text.
News articles (recordType: "article")
articleId- Patch's internal article IDheadline- article titleshortHeadline- shortened headline used on Patch's cards/feedssummary- one-line article summary/dekauthor- byline nameauthorId- Patch's internal author ID (useful to disambiguate two reporters who share a name)authorUrl- link to the author's Patch profilepublishedDate- publish timestamp (ISO 8601, UTC)updatedDate- last-updated timestamp (only present when different frompublishedDate)url- canonical article URL on patch.comtown- the Patch community the article belongs to (e.g.Santa Monica)townUrl- link to that town's Patch homepagestate- 2-letter US state/territory abbreviation (e.g.CA)regionUrl- link to that state's Patch statewide news hubcategory- news category/topic (e.g.Politics & Government)tags- editorial tags on the article (e.g.["Back To School"]; only present when Patch tagged the article - most articles have none)imageUrl- article thumbnail imagedistanceMiles- distance fromnearLat/nearLng, in miles (only present when a geo search is used)
Local events (recordType: "event", mode=events)
eventId- Patch's internal event IDheadline- event titleshortHeadline,summary,author,authorId,authorUrl- same meaning as articles (the event's poster)eventDate- the event's own occurrence date/time (ISO 8601, UTC) - this is what you filter witheventDateAfter/eventDateBeforepublishedDate/updatedDate- when the event listing itself was posted/edited on Patch (filter withpublishedAfter/publishedBefore)url,town,townUrl,state,regionUrl,imageUrl- same meaning as articleseventAddress- venue city/state/postal code, comma-joined (only present when Patch has address data for the event; most recent events include this)eventLat/eventLng- venue coordinates (only present when Patch has geocoded the venue)isPromoted-trueif the event listing is a paid/sponsored promotion
Classifieds (recordType: "classified", mode=classifieds)
classifiedId- Patch's internal classified listing IDheadline- listing titleshortHeadline,summary,author,authorId,authorUrl- same meaning as articles (the poster)category- classifieds category (e.g.Housing,For Sale,Gigs & Services- seeclassifiedCategoryinput)publishedDate/updatedDate- when the listing was posted/editedexpiresDate- when the listing expires from Patch's classifieds boardurl,town,townUrl,state,regionUrl,imageUrl- same meaning as articlesisPromoted-trueif the listing is a paid/sponsored promotion
These are the documented fields. Optional ones can be empty on a given record, so measure how often each field your deliverable depends on is populated across a real sample before automating the handoff.
How do you build the workflow end to end?
Open Patch Scraper and work through these in order. Each step ends with something to check, so a bad configuration surfaces on a small run rather than a scheduled one.
- Select mode such as search for keyword discovery or byTown for specific local community monitoring.
- Supply regionSlug and townSlug when using byTown mode, matching the slug structure from a Patch town URL.
- Set maxItems to 5 to execute an initial test run before scaling dataset extraction.
- Verify that each recordType in the output dataset matches the target entity type (article, event, or classified).
- Confirm that essential fields including headline, url, and publishedDate are populated in the test dataset.
- In corporate or topic workflows, adjust searchQuery or category to narrow relevant coverage.
- Increase maxItems up to 250 for full batch extraction.
How do you apply it? Three worked playbooks
These are Patch Scraper's own documented use cases, each worked through as an operating pattern rather than a description.
Use case 1: Local news monitoring
Outcome: Track breaking news for a specific town or neighborhood
Configure: mode=byTown, regionSlug=california, townSlug=santamonica, maxItems=25
Working method: Execute an initial run on a target town slug, inspect the returned article IDs, and schedule subsequent runs to track newly published items.
Deliverable: A structured dataset of town-specific articles with headlines, summaries, URLs, and publish timestamps.
Stop condition: A target town slug yields zero records across consecutive runs.
Use case 2: Real estate & business intelligence
Outcome: Pull local real-estate and business coverage across a state or nationwide
Configure: mode=byCategory, category=real-estate, sortBy=newest, maxItems=50
Working method: Execute category queries across regions, capturing recent headlines and filtering out records with publish dates prior to your collection window.
Deliverable: A dataset of regional real estate articles containing town, state, author, summary, and article URL.
Stop condition: Returned records contain publishedDate values older than your required cutoff.
Use case 3: Content aggregation
Outcome: Build a local-news feed or newsletter for a specific community
Configure: mode=search, searchQuery=school board, sortBy=newest, maxItems=30
Working method: Run keyword-filtered searches across community feeds, parsing summary texts and thumbnail image URLs for editorial curation.
Deliverable: A structured list of local news stories featuring headlines, summaries, bylines, and image links.
Stop condition: Returned items drift from the target topic due to an overly broad searchQuery string.
What breaks, and how do you design around it?
Patch caps query output at 250 records per run. To fetch older results beyond this limit, extract the oldest publishedDate from your dataset and pass it as publishedBefore in your next run.
When should you not use Patch Scraper?
Do not use Patch Scraper if your workflow requires full article body text, as returned records only contain headlines, summaries, and listing metadata. For automated discovery and full text content extraction from news sites, use News Source Crawler instead. If your project targets corporate press releases and financial disclosures rather than US community reporting, select GlobeNewswire Press Release Scraper.
What should you check before trusting the output?
- Verify that recordType contains expected values: article, event, or classified.
- Confirm that headline and url fields are non-empty strings across all returned dataset items.
- Check that publishedDate parses as a valid ISO 8601 UTC timestamp string.
- Ensure eventDate is present on records when running in events mode.
- Halt execution if a targeted townSlug returns zero records unexpectedly across multiple runs.
None of this proves a record is correct. It gives a scheduled Patch Scraper run defined points where it should stop instead of quietly passing bad data downstream.
Frequently asked questions
What does Patch Scraper cost on Apify's free plan?
On Apify's free plan, results cost $0.005 per result, which is $5.00 per 1,000 results. Apify's free plan includes $5.00 of monthly usage with no credit card, covering up to 1,000 results before platform usage or run charges.
Does Patch Scraper return the complete text of news articles?
No. The Actor returns headline, summary, author byline, dates, category, town, and article URL. Full article body text is not returned in the dataset.
How do I determine the regionSlug and townSlug values?
Examine the URL of the target community on Patch.com. For instance, in patch.com/california/santamonica, regionSlug is california and townSlug is santamonica.
How do I scrape more than 250 items for a topic?
Patch caps individual query listings at 250 items. To collect older entries, take the oldest publishedDate returned by your first run and pass it into publishedBefore on the next execution.
Can I filter events by their scheduled occurrence date?
Yes. When mode is set to events, use eventDateAfter and eventDateBefore formatted as YYYY-MM-DD to filter by the date of the event itself rather than when the listing was posted.
Where to go next
When you are ready to run it, open Patch Scraper on Apify; the free plan covers up to 1,000 results a month.
Start with the Patch Scraper Actor page for the current input schema, pricing tier, and run history.
Other Actors we maintain for related data:
- Yahoo News Scraper: Scrape Yahoo News articles across categories, trending stories, and keyword search.
- Yandex News Scraper: Scrape Yandex News stories, article clusters, and trending topics across Russian and CIS markets.
- News Source Crawler: Given a news website URL, discover and extract articles with full metadata with title, authors, publish date, body text, top image, keywords, and summary.
- GlobeNewswire Press Release Scraper: Scrape GlobeNewswire, a leading press-release wire for corporate, financial, and investor news.
- Dotfyle Neovim Plugins Scraper: Scrape Dotfyle (dotfyle.com) - a directory of 2,500+ Neovim plugins.
- StubHub Ticket Marketplace Scraper: Scrape StubHub.com event listings by keyword, artist, team, venue, or category.
- Crunchbase News Scraper: Extract startup, funding, M&A, and tech news articles from news.crunchbase.com like title, content, author, date, categories, tags, featured image.
- Baidu Search Scraper: Scrape Baidu search results - web, image, and news.
Related guides:
- Yandex News Scraper: Operational Guide, Configurations, and Playbooks
- GlobeNewswire Press Release Scraper: $5.00 per 1,000 results (2026)
- Bazaraki Cyprus Classifieds Scraper: 15 Categories Covered (2026)
- Meetup + Lu.ma Events Scraper: 17 Data Fields per Record (2026)
Resources
Actor documentation, input schema, and pricing: verified against the published Actor on 2026-09-28.
Actor last updated by its maintainers on 2026-08-18.
Run outcome figures cover the 30 day public window ending 2026-09-28.
Featured actors
Patch Scraper
Scrape Patch.com hyperlocal US news, local events, and classifieds. Search by keyword; browse by town, category, author, or tag; or browse the events calendar or marketplace listings. Filter by date range or distance. Get headline, summary, author, date, town, category, and image.
Run on Apify ↗