City Calendar Scraper - US Local Events avatar

City Calendar Scraper - US Local Events

Pricing

Pay per usage

Go to Apify Store
City Calendar Scraper - US Local Events

City Calendar Scraper - US Local Events

Extract events from US city .gov and community calendars. Auto-detects Drupal, CivicPlus, FullCalendar and generic layouts. Outputs clean JSON or CSV with event name, date, time, venue, description. Residential proxy recommended.

Pricing

Pay per usage

Rating

0.0

(0)

Developer

Anh Nguyen

Anh Nguyen

Maintained by Community

Actor stats

0

Bookmarked

1

Total users

0

Monthly active users

a day ago

Last modified

Share

City Calendar Scraper — US Local Events

Extract events from US city .gov and community calendars automatically. One actor, unified output, no custom coding needed.

What it does

This actor scrapes event listings from city and community calendar websites. It automatically detects the calendar type and extracts event data into a clean, normalized format.

Supported calendar types:

  • Drupal Views Calendar (monthly grid with event items)
  • CivicPlus / VisionInternet event widgets
  • FullCalendar JS-rendered calendars (Revize CMS)
  • Generic event listings (any page with event-like structure)

Who is this for

  • Newsletter publishers — pull local events for weekly roundups
  • Real estate agents — show community events near listings
  • Local SEO agencies — generate content from city calendars
  • Event aggregators — build databases of community events
  • Researchers — track municipal activities across cities

Input

FieldTypeDefaultDescription
urlsstring[]requiredList of city/community calendar page URLs
maxEventsPerSiteinteger50Maximum events to extract per URL (1-200)
includeDescriptionbooleantrueFetch full event description from detail pages
outputFormatstringcsvOutput format: "json" or "csv"

Example input

{
"urls": [
"https://www.fostercity.org/calendar",
"https://www.redwoodcity.org/events",
"https://www.ssfca.gov/Departments/Parks-Recreation/Events"
],
"maxEventsPerSite": 20,
"includeDescription": true,
"outputFormat": "csv"
}

Output

Each event contains:

FieldDescription
eventNameEvent title
dateEvent date
timeEvent time (if available)
cityCity name extracted from URL
venueVenue or location (if available)
descriptionFull event description (if includeDescription is enabled)
priceFree/Paid info (if detected)
eventUrlDirect link to event detail page
imageUrlEvent image URL (if available)
sourceUrlCalendar page that was scraped
scrapedAtTimestamp of extraction

Example output

{
"eventName": "Egg Hunt 2026",
"date": "2026-04-04",
"time": "10:00am",
"city": "fostercity",
"venue": "Leo J. Ryan Meadow",
"description": "The City of Foster City presents our inaugural Egg Hunt...",
"price": "N/A",
"eventUrl": "https://www.fostercity.org/parksrec/page/egg-hunt-2026",
"imageUrl": null,
"sourceUrl": "https://www.fostercity.org/calendar",
"scrapedAt": "2026-04-05T07:15:10.823Z"
}

How it works

  1. The actor visits each URL you provide
  2. It detects the calendar/CMS type automatically
  3. Events are extracted using the matching strategy
  4. If includeDescription is enabled, it visits detail pages for full descriptions
  5. Data is normalized and deduplicated
  6. Results are saved to the dataset (JSON) and optionally as CSV

Proxy

Recommended: Residential proxies for best results. Many .gov sites block datacenter IPs.

Performance

  • ~10 events per site takes 5-15 seconds
  • Memory usage: under 1024 MB
  • Each URL is processed sequentially for stability

Cost estimate

  • ~0.3 compute units per 10 sites with 50 events each
  • Using includeDescription: true increases compute time (detail page visits)

Limitations

  • Event data accuracy depends on source site structure
  • Some fields may not be available on all sites (venue, price, image)
  • FullCalendar (JS-rendered) sites may have limited extraction
  • If a site changes its layout, extraction may need updating
  • Sites with heavy bot protection may return fewer results

Tips

  • Start with maxEventsPerSite: 10 and includeDescription: false for quick testing
  • Use includeDescription: true for production runs to get full event details
  • Check the logs to see which calendar type was detected for each URL
  • CSV output opens directly in Excel and Google Sheets (UTF-8 with BOM)

Disclaimer

Data accuracy depends on source sites. This actor extracts publicly available information. User is responsible for compliance with source site Terms of Service. This actor does not store or cache data between runs.

Changelog

  • 1.0 — Initial release: Drupal Calendar, CivicPlus Widget, FullCalendar, Generic fallback strategies