Patch.com Local News, Events & Classifieds Finder
Search Patch.com's hyperlocal US news by keyword, town, category, author, or tag, and browse its local events calendar or classifieds board, with date-range and distance filters.
Open in Apify Store$0.99 / 1K on Free
Short answer
Patch.com Local News, Events & Classifieds Finder is an Apify Store Actor that returns 10 published output fields, including headline, town, category, author. It lists $0.99 per 1,000 results on the Free plan (pay per event), $0.49 on the Business plan. It takes 24 input settings; one is required (mode). Last updated Nov 4, 2026.
From the public Store listing and published build schema, synced 2026-11-12.What it returns
10 fields from the published dataset schema. Export as JSON, CSV or Excel, or read the dataset through the Apify API.
recordTypeheadlinetowncategoryauthorpublishedDateeventDateurlisBreakingNewscommentCount
Input
| Setting | Type | Required | Default | What it does |
|---|---|---|---|---|
| mode | string | Yes | search | What to fetch from Patch.com. |
| startUrls | array | No | – | mode=byUrl only. Paste Patch article, event, classified, town, category/topic, state or search URLs. Article/event/classified URLs are scraped directly; town/topic/state/search URLs are converted into the equivalent scoped query. |
| searchQuery | string | No | – | Free-text keyword to search for (mode=search; also applies to mode=events/classifieds and to scope URLs). Leave empty to browse the newest articles matching the other filters. |
| searchMatch | string | No | allWords | How multi-word searches match. "All words" requires every word anywhere in the headline/summary/topic (more results). "Exact phrase" requires the words to appear together (the old behavior). |
| authorName | string | No | – | Exact byline/reporter/poster name (required for mode=byAuthor; on any other mode it is an extra server-side filter). Copy it from this actor's `author` output field, e.g. "Eric Heyl". |
| tagName | string | No | – | Exact editorial tag (required for mode=byTag; on article modes it is an extra filter). Copy it from this actor's `tags` field, e.g. "Back To School". Only a minority of articles carry tags. |
| regionSlug | string | No | – | US state/edition to scope results to (required for mode=byTown; optional filter on every other mode). "Across America" is Patch's national edition (code US); "US Territories" is a valid Patch region with no current articles. |
| townSlug | string | No | – | 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). |
| category | string | No | – | News category/topic to filter by (required for mode=byCategory; optional filter on mode=search/byTown/byAuthor/byTag). Not applicable to mode=events/classifieds -- use `classifiedCategory` for mode=classifieds instead. |
| classifiedCategory | string | No | – | Classifieds category to filter by (mode=classifieds only; a completely separate value set from `category`, which is news-only). Leave as "(any category)" to browse every classified category. |
Show the other 14 settings
| Setting | Type | Required | Default | What it does |
|---|---|---|---|---|
| sortBy | string | No | relevance | Order of results. "Nearest first" requires both `nearLat`/`nearLng` AND 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. |
| publishedAfter | string | No | – | Only include articles/events/classifieds posted to Patch on or after this date (i.e. listing date, not an event's own occurrence date -- see `eventDateAfter` for that). Format: YYYY-MM-DD. Combine with `publishedBefore` for a date range. |
| publishedBefore | string | No | – | Only include articles/events/classifieds posted to Patch on or before this date. Format: YYYY-MM-DD. Combine with `publishedAfter` for a date range. |
| eventDateAfter | string | No | – | mode=events only. Only include events occurring on or after this date (the event's own date, not when it was posted to Patch -- see `publishedAfter` for that). Format: YYYY-MM-DD. Combine with `eventDateBefore` for a date range, e.g. "what's happening this weekend". |
| eventDateBefore | string | No | – | mode=events only. Only include events occurring on or before this date. Format: YYYY-MM-DD. Combine with `eventDateAfter` for a date range. |
| nearLat | number | No | – | Latitude of a point to search near (combine with `nearLng` and `radiusMiles`). News modes only (search/byTown/byCategory/byAuthor/byTag) -- not available for mode=events/classifieds, whose Patch indexes don't expose a filterable location field. Both `nearLat` and `nearLng` must be set together; othe |
| nearLng | number | No | – | Longitude of a point to search near (combine with `nearLat` and `radiusMiles`). News modes only -- see `nearLat` description. Both `nearLat` and `nearLng` must be set together; otherwise this filter is ignored. |
| radiusMiles | integer | No | 25 | Search radius around `nearLat`/`nearLng`, in miles. News modes only -- see `nearLat` description. Ignored unless both `nearLat` and `nearLng` are set. |
| includeBodyText | boolean | No | true | Add bodyHtml (the original HTML), bodyText (readable plain text) and bodyLength to each record. Article/event/classified bodies come from Patch's own search payload, so this costs no extra request. |
| includeDetails | boolean | No | false | Fetch each record's Patch page and add gallery images/captions/credits, author avatar and points, comment/reply counts, breaking/sponsored flags, town grade/weekly views/ZIPs/timezone/county/metro, event venue/type/website, and classified contact state. One extra request per record; failed pages nev |
| maxDetails | integer | No | 100 | How many records to enrich when `includeDetails` is on. 0 means every emitted record (up to `maxItems`). Ignored when detail enrichment is off. |
| monitorMode | boolean | No | false | Emit only records whose Patch ID has not been seen by an earlier run with the same monitor key. State is stored in the actor's key-value store. |
| monitorKey | string | No | – | Optional namespace for monitor state. Give different saved tasks different keys to keep their seen-ID lists separate. Derived automatically from the mode and filters when empty. |
| maxItems | integer | No | 25 | Maximum number of articles, events or classifieds to return (1-1000). Requests above 250 are automatically split into date partitions to bypass Patch's 250-hit search-key window. |
Example input
Built from the input form's published example values and defaults.
{
"mode": "search",
"searchQuery": "city council",
"searchMatch": "allWords",
"sortBy": "relevance",
"radiusMiles": 25,
"includeBodyText": false,
"includeDetails": false,
"maxDetails": 0,
"monitorMode": false,
"maxItems": 3
} Run it from code or an AI agent
The same run through the Apify API, with the example input. You need an Apify API token; the run is billed to your account at the Store price.
Python
from apify_client import ApifyClient
client = ApifyClient("<YOUR_APIFY_TOKEN>")
run_input = {
"mode": "search",
"searchQuery": "city council",
"searchMatch": "allWords",
"sortBy": "relevance",
"radiusMiles": 25,
"includeBodyText": False,
"includeDetails": False,
"maxDetails": 0,
"monitorMode": False,
"maxItems": 3
}
run = client.actor("dataspryva/patch-com-local-news-events-and-classifieds-finder").call(run_input=run_input)
if run is None:
raise RuntimeError("The Actor run was not found.")
for item in client.dataset(run.default_dataset_id).iterate_items():
print(item) pip install apify-client
JavaScript
import { ApifyClient } from "apify-client";
const client = new ApifyClient({ token: "<YOUR_APIFY_TOKEN>" });
const input = {
"mode": "search",
"searchQuery": "city council",
"searchMatch": "allWords",
"sortBy": "relevance",
"radiusMiles": 25,
"includeBodyText": false,
"includeDetails": false,
"maxDetails": 0,
"monitorMode": false,
"maxItems": 3
};
const run = await client.actor("dataspryva/patch-com-local-news-events-and-classifieds-finder").call(input);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items); npm install apify-client
cURL
curl -X POST "https://api.apify.com/v2/actors/dataspryva~patch-com-local-news-events-and-classifieds-finder/run-sync-get-dataset-items" -H "Authorization: Bearer $APIFY_TOKEN" -H "Content-Type: application/json" -d '{"mode":"search","searchQuery":"city council","searchMatch":"allWords","sortBy":"relevance","radiusMiles":25,"includeBodyText":false,"includeDetails":false,"maxDetails":0,"monitorMode":false,"maxItems":3}' Waits for the run and returns the dataset items (runs over 300 seconds return HTTP 408; start an async run instead).
MCP (AI agents)
{
"mcpServers": {
"apify": {
"url": "https://mcp.apify.com?tools=dataspryva/patch-com-local-news-events-and-classifieds-finder",
"headers": {
"Authorization": "Bearer <YOUR_APIFY_TOKEN>"
}
}
}
} Adds this Actor as a tool in an MCP client that takes a remote server URL (Cursor, VS Code, Claude Code) through Apify's hosted MCP server. OAuth sign-in also works without the header. Clients that only start local servers can wrap the URL with npx mcp-remote.
What a run costs
The result rate falls on higher Apify plans. Each figure is the published per-result rate times the number of results.
| Apify plan | Per 1,000 | 10,000 results | 100,000 results |
|---|---|---|---|
| Free plan | $0.99 | $9.90 | $99 |
| Starter plan | $0.82 | $8.20 | $82 |
| Scale plan | $0.66 | $6.60 | $66 |
| Business plan | $0.49 | $4.90 | $49 |
- Every run also has a start event, charged per GB of memory (minimum one): $0.10 on Free, $0.03 on Business. At its default memory of 4 GB a run starts at $0.40 on Free. Fewer, larger runs keep this small.
- The Free plan includes $5 of monthly usage (Apify pricing, checked 2026-11-11); at the Free rate that covers at most about 5,050 results, less start events and platform usage.
- Worked example: 10,000 results in one run on the Free plan cost $10.30 ($9.90 for results + $0.40 start), plus Apify platform usage (compute), billed separately by Apify.
- Pay per event. Platform usage (compute) is billed by Apify on top of the event prices. Compare other tools in the cost estimator.
What people use it for
- find local news
- browse local events and classifieds
Similar Actors
Google News Keyword & Full-Text Article Scraper
Search Google News by keyword with real resolved article links, headlines, sources, and dates, plus optional full article text and image…
Yandex News Story Clusters Across Russia & the CIS
Search or browse Yandex News and get story clusters with every linked article, topic tags, source names and publication dates across Russian and…
Crunchbase News & Funding Coverage Scraper
Extract Crunchbase's editorial news articles on startup funding, M&A, IPOs and tech trends: full text, author, publish date, categories, tags and…
Yahoo News Trending, Category & Keyword Feed by Region
Get Yahoo News trending top stories, category feeds, or keyword-filtered headlines across six regional editions, with source, publish date, image,…
Apartments.com Rental Listing & Floor Plan Scraper
Search Apartments.com rentals by city, bedroom count, price, property type, pet policy, and amenities, or scrape specific listing URLs directly.…
Bayt.com MENA Job Listing & Salary Scraper
Search Bayt.com job listings across Middle East and North Africa countries by keyword, location, career level, and employment type. Get titles,…
Questions people ask
How much does Patch.com Local News, Events & Classifieds Finder cost?
The published result rate depends on your Apify plan: $0.99 per 1,000 on Free, $0.82 per 1,000 on Starter, $0.66 per 1,000 on Scale, $0.49 per 1,000 on Business. So 10,000 results cost about $9.90 on the Free plan and $4.90 on Business, plus a start fee of $0.10 per run per GB of memory on Free. Platform usage is billed separately.
What data does Patch.com Local News, Events & Classifieds Finder return?
Its published output schema lists 10 fields: recordType, headline, town, category, author, publishedDate, eventDate, url, isBreakingNews, commentCount. A listed field is not guaranteed to be filled in every row.
What input does Patch.com Local News, Events & Classifieds Finder need?
Required: mode. Optional settings include startUrls, searchQuery, searchMatch, authorName, tagName, regionSlug.
How do I run Patch.com Local News, Events & Classifieds Finder from Python or the API?
Use the Apify API client: in Python, ApifyClient(token).actor("dataspryva/patch-com-local-news-events-and-classifieds-finder").call(run_input=...), then read the run's default dataset (run.default_dataset_id); in JavaScript the same call is client.actor("dataspryva/patch-com-local-news-events-and-classifieds-finder").call(input). Without a client, POST the input JSON to https://api.apify.com/v2/actors/dataspryva~patch-com-local-news-events-and-classifieds-finder/run-sync-get-dataset-items with your API token. Ready-to-paste code with the example input is on this page.
Sources
- Patch.com Local News, Events & Classifieds Finder on Apify Store
- Published build with input and output schema (JSON)
Cite this page
Scraper Finder. "Patch.com Local News, Events & Classifieds Finder." https://scraperfinder.com/catalogue/patch-com-local-news-events-and-classifieds-finder/ (data checked 2026-11-12).
Run Patch.com Local News, Events & Classifieds Finder
$0.99 per 1,000 results. Paste the example input above, set your target query, then export the dataset.