All Events Scraper
Pricing
from $1.00 / 1,000 results
All Events Scraper
A fast and reliable scraper for AllEvents.in that extracts event titles, dates, locations, interested people count, and more. Provides clean, structured data with support for Markdown, pagination, and easy API integration for your applications.
Pricing
from $1.00 / 1,000 results
Rating
4.9
(9)
Developer
Techforce Global
Maintained by CommunityActor stats
6
Bookmarked
108
Total users
8
Monthly active users
0.19 hours
Issues response
8 days ago
Last modified
Categories
Share
All Events Scraper (AllEvents.in) — Extract City Event Listings, Venues, Dates & Interest Counts
Extracts structured event data from allevents.in city listing pages — event title, human-readable date/time, venue and city, interest count, and canonical event URL. Strong coverage of India, Southeast Asia and other regions where Eventbrite inventory is thin. Results save to an Apify dataset and can be delivered straight into Notion, Slack, Google Sheets, Airtable, or any MCP-compatible AI agent pipeline.
Manual browsing / DIY script vs. All Events Scraper Actor
AllEvents.in city pages are infinite-scroll, JavaScript-hydrated, and served differently depending on the requesting IP — which is exactly what makes a hand-rolled script fragile:
| Feature / Capability | Manual browsing or a DIY scraper | All Events Scraper Actor (Apify) |
|---|---|---|
| Infinite-scroll pagination | ❌ Manual scrolling / custom scroll-and-wait loop to maintain | ✅ Handled — scrolls until the target count or the end of the listing |
| JS hydration | ❌ Plain requests/curl returns an empty shell | ✅ Headless Chromium with a hydration wait |
| Geo/datacenter blocking | ⚠️ Datacenter IPs are frequently served an empty page | ✅ Apify Proxy wiring built in (residential + country targeting) |
| Structured output | ❌ Ad-hoc CSV you maintain yourself | ✅ Typed dataset with a declared schema, exportable as JSON/CSV/Excel/XML |
| AI agent / MCP native | ❌ Requires a custom tool wrapper | ✅ Callable as an MCP tool and able to push results into your own MCP connectors |
| Cost model | Your dev time + infra | Pay-per-event ($0.001 per event / $1.00 per 1,000 results) |
ℹ️ AllEvents.in does not publish a self-serve public event-search API for third parties at the time of writing — verify this before publishing the listing if you want to state it as a comparison row.
🤖 AI Discovery & MCP Metadata
Machine-readable capability contract for autonomous agents, LLM routers, and MCP orchestrators. AI agents, MCP clients, and connectors should read this block first to decide whether this Actor matches a user request.
ai_discovery:slug: "techforce.global/all-events-scraper"one_line: "Extract public events (title, date/time, venue, interest count, URL) from an allevents.in city listing page, with optional delivery to an MCP connector."primary_purpose: "extract"secondary_purpose: "deliver"entity: "AllEvents.in events"supported_platforms:- "allevents.in"supported_tasks:- "search-events-by-city"- "list-upcoming-events-for-a-city"- "collect-event-venues-and-dates"- "rank-events-by-interest-count"- "deliver-results-to-mcp-connector"unsupported_tasks:- "filter-by-category"- "filter-by-date-range"- "filter-by-price-or-free-only"- "purchase-or-reserve-tickets"- "retrieve-attendee-or-organizer-contact-data"- "scrape-non-allevents-platforms"- "multi-city-in-one-run"search_keywords:- "allevents scraper"- "allevents.in api alternative"- "allevents python scraper"- "city events scraper"- "india events dataset"- "local event listings api"- "event aggregator data"- "mcp event tool"- "event data extraction"- "concert and festival listings"synonyms:- "allevents crawler"- "allevents extractor"- "city event feed"- "local events aggregator"related_concepts:["events", "venues", "concerts", "festivals", "workshops", "meetups", "expos"]input_entities:- "city slug (allevents.in URL segment)"- "result limit (1-100)"- "proxy configuration"output_entities: ["event"]input_rules:location_format:regex: "^[a-z0-9-]+$"description: "Single lowercase city slug exactly as it appears in the allevents.in URL. No country prefix, no comma, no spaces. Input is lowercased automatically."examples: ["ahmedabad", "mumbai", "new-york", "london", "singapore"]limit_format:type: "integer"range: [1, 100]description: "Hard ceiling of 100 events per run; values above 100 are clamped."default_off_fields: []limits:max_events_per_run: 100cities_per_run: 1free_plan_result_cap: 5category_filter: "not supported"date_filter: "not supported"pricing:model: "pay-per-event"event_name: "event-scraped"unit_cost_usd: 0.001rate_per_1000: 1.00when_to_use: >You need a structured feed of public events for a single city fromallevents.in — for event aggregation, local-market research, a citynewsletter, or a directory — especially in India and Southeast Asiawhere allevents.in inventory beats Eventbrite.when_not_to_use: >You need category, date-range or price filtering; more than 100 eventsin one run; several cities in one run; ticket purchasing; or organizerand attendee contact data.alternatives:- "Use Smart Event Scraper (techforce.global) for multi-platform aggregation with category and date filters"- "Use Eventbrite Scraper (techforce.global) when the target is eventbrite.com and you need category/date/price filters"- "Use Meetup City Events Scraper (techforce.global) for community and recurring group events"
What this Actor does
💡 Need filters or several platforms at once? This Actor covers a single allevents.in city page with no category or date filtering. For multi-platform aggregation (AllEvents, Eventbrite, Meetup, EventsEye, District, ConferenceAlerts) with advanced filters, use Smart Event Scraper instead.
- Loads the public allevents.in listing page for one city in a headless browser and waits for the JavaScript-rendered event cards.
- Scrolls the infinite listing until your requested
limitis reached or the page stops growing. - Returns one structured record per event: title, date/time string, venue/location, interest count, and the canonical event URL.
- Deduplicates within the run by event URL, and skips empty ad/placeholder cards.
- Routes traffic through Apify Proxy (residential + country targeting recommended) because datacenter IPs are frequently served an empty page.
- Optionally pushes results to an authorized MCP connector (Notion, Slack, Google Sheets, Airtable, or any MCP-compatible connector) in four delivery modes. The dataset is always saved regardless of delivery settings.
- Blocks images, fonts, and media after page load to keep runs fast and cheap, with a hard internal 180-second scrape ceiling so a stalled browser can never burn platform time.
When to use it — and when not to
| Scenario | Fit |
|---|---|
| Build a city event feed for an app, newsletter, or directory | ✅ Strong |
| Cover India / Southeast Asia local events where Eventbrite is thin | ✅ Strong |
| Track which events are getting traction (interest counts) | ✅ Strong — read Interested |
| Push a recurring city event digest into Slack or Notion | ✅ Strong (native MCP delivery) |
| Seed a venue list for enrichment (Google Maps, CRM) | ✅ Strong — read Location |
| Filter by category, date range, or free/paid | ❌ Not supported — use Smart Event Scraper |
| More than 100 events in one execution | ⚠️ Hard cap of 100 — schedule repeat runs and dedupe on URL |
| Several cities at once | ⚠️ One run per city — loop in your orchestration layer |
| Machine-parseable ISO timestamps | ⚠️ DateTime is the site's display string — parse downstream |
| Non-AllEvents sources | Use Smart Event Scraper or a platform-specific Actor |
| Buying/reserving tickets | ❌ Not supported — read-only Actor |
| Attendee or organizer contact data | ❌ Not supported — public listing cards only |
⚡ Execution Rules (Avoid Common Agent Failures)
locationis a single city slug, not "City, Country". Passahmedabad,mumbai,new-york— neverAhmedabad, Indiaorunited-states--new-york. The value is trimmed and lowercased for you, but spaces and commas will produce a dead URL and an empty result. The slug mirrors the allevents.in path: openallevents.in/<slug>/allto confirm.locationis the only required field, and it has a default (Ahmedabad). Omitting it in an API/MCP call silently scrapes Ahmedabad rather than raising a validation error. Always pass it explicitly.- The result field is
limit, notmaxEvents. Default50, hard maximum100. Values above 100 are clamped, not rejected. - Output keys are PascalCase:
Title,URL,DateTime,Location,Interested. Lowercase key lookups (item["title"]) will fail. DateTimeandInterestedare display strings, not typed values. Expect"Sun, 09 Aug, 2026 - 08:30 PM"and"1511+ Interested". Parse or strip downstream; never assume ISO-8601 or an integer.- There is no category, date, or price filter. Filter downstream on
Title/DateTime, or route the request to Smart Event Scraper. - Proxy matters. The schema defaults to
RESIDENTIAL+ countryIN. Residential proxy groups require a paid Apify plan — on a free account the run falls back to whatever is available and may load an empty page. If results are0, the proxy is the first thing to check. deliveryModedefaults tosummary, notnone. For dataset-only runs, either leavemcpConnectorempty or setdeliveryMode: "none"explicitly.- Free Apify plans are capped at 5 results per run with an upgrade notice in the log. This is a successful run, not a failure.
dependencies:- rule: "delivery requires mcpConnector AND mcpTool"on_violation: "delivery step is skipped with a warning; the dataset is still written in full"- rule: "mcpArguments must reference {message} for the rendered template to appear anywhere"on_violation: "message body is empty; the tool is still called"- rule: "mcpConnector only resolves when the Actor runs on the Apify platform"on_violation: "local runs log 'APIFY_MCP_PROXY_URL is not set' and skip delivery; the dataset is unaffected"- rule: "perEvent mode issues one connector call per event"note: "with limit=100 that is 100 calls — prefer 'chunked' or 'summary' for large runs"authentication:actor_input: noneplatform: "Apify API token required for API / SDK / MCP invocation; paid plan required for residential proxy groups"target_site: "no AllEvents.in account or credentials required (public data only)"
📥 Input Contract
.actor/input_schema.json is authoritative — if any table on this page disagrees with the schema files, the schema files win. API and MCP clients should explicitly pass location.
Scraping Parameters
| Field | Type | Required | Default | Allowed Values / Format | Example |
|---|---|---|---|---|---|
location | string | ✅ Yes | Ahmedabad | City slug (^[a-z0-9-]+$ after lowercasing) | mumbai |
limit | integer | ⬜ No | 50 | 1 to 100 (clamped at 100) | 100 |
proxyConfiguration | object | ⬜ No | { useApifyProxy: true, apifyProxyGroups: ["RESIDENTIAL"], apifyProxyCountry: "IN" } | Apify proxy editor object | see below |
{"location": "mumbai","limit": 100,"proxyConfiguration": {"useApifyProxy": true,"apifyProxyGroups": ["RESIDENTIAL"],"apifyProxyCountry": "IN"},"deliveryMode": "none"}
Location reference
Format: a single lowercase slug, hyphens instead of spaces, no country prefix and no commas. It mirrors AllEvents' own URL path segment — to confirm any city, open allevents.in/<slug>/all and copy the segment after the domain.
| City | Slug | Verify URL |
|---|---|---|
| Ahmedabad | ahmedabad | allevents.in/ahmedabad/all |
| Mumbai | mumbai | allevents.in/mumbai/all |
| New Delhi | new-delhi | allevents.in/new-delhi/all |
| New York | new-york | allevents.in/new-york/all |
| London | london | allevents.in/london/all |
| Singapore | singapore | allevents.in/singapore/all |
MCP Delivery Configuration (Optional)
| Parameter | Type | Default | Description |
|---|---|---|---|
mcpConnector | string | "" | Authorized MCP connector on your Apify account (e.g., Slack, Notion, Airtable, Google Sheets). Leave empty for dataset-only runs. |
deliveryMode | enum | summary | summary (single digest) · chunked (split large lists) · perEvent (one call per item) · none. |
mcpTool | string | "" | Tool name on the connector: send_message, create_page, append_row. Run once with a connector selected — the log lists the connector's available tools. |
mcpArguments | object | {} | JSON argument template passed to the tool. String leaves support {placeholders}. |
mcpMessageTemplate | string | "" | Template rendered and exposed to mcpArguments as {message}. |
Placeholders available in mcpArguments and mcpMessageTemplate:
| Mode | Placeholders |
|---|---|
summary | {location}, {eventCount}, {eventsText}, {message} |
chunked | the above plus {part}, {partCount} (and {eventsText} holds one part) |
perEvent | {title}, {url}, {dateTime}, {eventLocation}, {interested}, {eventText}, plus {location}, {eventCount}, {message} |
Slack example:
{"mcpConnector": "<your-authorized-slack-connector>","deliveryMode": "summary","mcpTool": "send_message","mcpMessageTemplate": "Found {eventCount} events in {location}:\n\n{eventsText}","mcpArguments": { "channel": "#events", "text": "{message}" }}
Chunked delivery groups events into parts under ~72,000 characters and truncates any single event block at ~1,800 characters, so services with per-request block or timeout caps (Notion in particular) never reject the call.
📤 Output Contract & Data Structure
Storage: Apify Dataset (one JSON object per event).
Pagination: limit & offset on the dataset items endpoint.
Duplicates: one record per unique event URL within a run. Cross-run deduplication is the consumer's responsibility — use URL as the key.
| Field | Type | Nullable | Meaning |
|---|---|---|---|
Title | string | No | Event title as listed on the card. Cards without a title are skipped as ads/placeholders. |
URL | string | No | Canonical allevents.in event URL — use as the dedupe key |
DateTime | string | No (may be "") | Site display string, e.g. "Sun, 09 Aug, 2026 - 08:30 PM". Not ISO-8601, no timezone offset. |
Location | string | No (may be "") | Venue and city as displayed, e.g. "HK Hall: Ahmedabad" |
Interested | string | No (may be "") | Interest counter as displayed, e.g. "1511+ Interested". String, not a number. |
Missing values are empty strings, not null and not absent keys. All five keys are always present on every item — there are no output field toggles on this Actor.
Datetime format: DateTime is scraped verbatim from the listing card in the site's local presentation. There is no separate timezone field. If you need sortable timestamps, parse it downstream (e.g. dateutil.parser) and attach the city's timezone yourself.
Example output item
{"Title": "Allow Me!: A Standup Comedy Show by Rahul Dua","URL": "https://allevents.in/ahmedabad/allow-me-a-standup-comedy-show-by-rahul-dua/3900030185673229","DateTime": "Sun, 09 Aug, 2026 - 08:30 PM","Location": "HK Hall: Ahmedabad","Interested": "1511+ Interested"}
What a successful run looks like
{"status": "SUCCEEDED","defaultDatasetId": "<datasetId>","stats": { "itemCount": 50 }}
itemCount equal to limit means the cap was reached (more events may exist on the page). itemCount less than limit means the listing was exhausted, the scroll budget ran out, or the free-plan cap applied. itemCount of 0 is a successful run with no matches — check the city slug and the proxy before treating it as a bug.
▶️ Invocation & Integration
Lifecycle: Discover → Understand → Configure → Execute → Retrieve → Validate. Authenticate every call with Authorization: Bearer <APIFY_TOKEN>.
Apify Console
Open the Actor → Input tab → set location and limit → confirm the proxy block → Start → export from the Dataset tab (JSON, CSV, Excel, XML).
Model Context Protocol (MCP)
Add this Actor directly as an AI tool in Claude Desktop, Cursor, VS Code, or LangChain agents:
claude mcp add --transport http apify \"https://mcp.apify.com?tools=techforce.global/all-events-scraper"
Python (apify-client)
import osfrom apify_client import ApifyClientclient = ApifyClient(os.getenv("APIFY_TOKEN"))run = client.actor("techforce.global/all-events-scraper").call(run_input={"location": "mumbai","limit": 100,"proxyConfiguration": {"useApifyProxy": True,"apifyProxyGroups": ["RESIDENTIAL"],"apifyProxyCountry": "IN",},"deliveryMode": "none",})items = client.dataset(run["defaultDatasetId"]).list_items().itemsprint(f"Retrieved {len(items)} events.")for item in items[:3]:print(item["Title"], "|", item["DateTime"], "|", item["Location"])
JavaScript / TypeScript (apify-client)
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: process.env.APIFY_TOKEN });const run = await client.actor('techforce.global/all-events-scraper').call({location: 'london',limit: 50,deliveryMode: 'none',});const { items } = await client.dataset(run.defaultDatasetId).listItems();console.log(`Scraped ${items.length} items. First event:`, items[0]?.Title);
cURL — synchronous (returns items directly; 300s limit)
curl -X POST \-H 'Content-Type: application/json' \-H 'Authorization: Bearer <YOUR_APIFY_TOKEN>' \-d '{"location":"ahmedabad","limit":50,"deliveryMode":"none"}' \'https://api.apify.com/v2/acts/techforce.global~all-events-scraper/run-sync-get-dataset-items'
cURL — asynchronous with a spend cap (recommended for production)
# 1. Start execution with a hard spend limitcurl -X POST -H 'Content-Type: application/json' \-H 'Authorization: Bearer <YOUR_APIFY_TOKEN>' \-d '{"location":"mumbai","limit":100,"deliveryMode":"none"}' \'https://api.apify.com/v2/acts/techforce.global~all-events-scraper/runs?maxTotalChargeUsd=0.10'# 2. Pollcurl -H 'Authorization: Bearer <YOUR_APIFY_TOKEN>' \'https://api.apify.com/v2/actor-runs/<runId>'# 3. Retrieve when SUCCEEDEDcurl -H 'Authorization: Bearer <YOUR_APIFY_TOKEN>' \'https://api.apify.com/v2/datasets/<DATASET_ID>/items?clean=true&format=json&limit=100&offset=0'
⚠️ Autonomous Agent Error Handling & Resolution Matrix
| Error Code | Detection Condition | Underlying Cause | Deterministic Agent Action |
|---|---|---|---|
AUTH_INVALID | HTTP 401 | Missing or malformed APIFY_TOKEN | Abort & Prompt User: request a valid API token. |
RATE_LIMITED | HTTP 429 | Apify API rate / concurrency limits | Retry: exponential backoff (2s, 4s, 8s). |
SYNC_TIMEOUT | HTTP 408 on the sync endpoint | Run exceeded the 300s synchronous ceiling | Reconfigure: switch to async POST /runs + polling. |
BAD_LOCATION | SUCCEEDED with itemCount: 0, log shows the built URL | Slug contains spaces/commas/country prefix, or the city has no AllEvents page | Modify Input: pass a single lowercase slug verified at allevents.in/<slug>/all. |
PROXY_BLOCKED | itemCount: 0 and log line No event cards detected | Page served empty to the exit IP (common on datacenter IPs) | Reconfigure: use RESIDENTIAL group with a country close to the city; retry once. |
PROXY_UNAVAILABLE | Log line Proxy setup failed …; falling back to direct connection | Residential groups require a paid Apify plan | Prompt User: upgrade the plan, or retry with apifyProxyGroups: ["AUTO"]. |
NAV_TIMEOUT | Log line Navigation timed out, run ends with Failed to load page | Page did not reach domcontentloaded within 30s | Retry: re-run once; if it repeats, change proxy country. |
SCRAPE_TIMEOUT | Log line Scrape exceeded 180s — stopping early | Slow scroll/hydration; partial results were still saved | Consume partial data, then re-run with a lower limit. |
FREE_PLAN_CAP | itemCount: 5 with the upgrade banner in the log | Free Apify plan caps results at 5 per run | Prompt User: upgrade for the full 100-event run. |
CAP_REACHED | itemCount == limit == 100 | Per-run maximum truncated the result set | Reconfigure: schedule repeat runs and dedupe downstream on URL. |
DELIVERY_SKIPPED | Log line no tool name was provided | mcpConnector set but mcpTool empty | Modify Input: set mcpTool; the dataset is already saved. |
DELIVERY_TOOL_UNKNOWN | Log line Tool 'x' is not available on this connector | Wrong tool name for that connector | Modify Input: pick a name from the Available tools: list in the same log line. |
DELIVERY_EMPTY | Connector called, body empty | mcpArguments omitted the {message} placeholder | Modify Input: map {message} inside mcpArguments. |
CHARGE_LIMIT | Run aborted before reaching limit | maxTotalChargeUsd spend threshold reached | Prompt User: confirm a higher spend cap. |
⚠️ Verify before publishing: the HTTP status codes above reflect standard Apify API behavior; the log-line conditions are taken from this Actor's own source. Re-confirm the
408/429rows against current platform behavior if you depend on them for automated retry logic.
🗣️ Natural Language → Actor Mapping
| User says | Intent | Constructed Actor input |
|---|---|---|
| "What's happening in Ahmedabad this week?" | Event discovery | {"location":"ahmedabad","limit":50} |
| "Get me 100 upcoming events in Mumbai" | Bulk extraction | {"location":"mumbai","limit":100} |
| "Scrape allevents.in listings for Bangalore" | Extraction | {"location":"bangalore","limit":100} |
| "Which events in Delhi are the most popular?" | Ranking | {"location":"new-delhi","limit":100} then sort on Interested |
| "Build a weekly event digest for Pune" | Scheduled feed | {"location":"pune","limit":50} on an Apify schedule |
| "Post today's Ahmedabad events to Slack #events" | Pipeline/delivery | {"location":"ahmedabad","mcpConnector":"slack","deliveryMode":"summary","mcpTool":"send_message","mcpArguments":{"channel":"#events","text":"{message}"}} |
| "Save London events into my Notion database" | Pipeline/delivery | {"location":"london","deliveryMode":"chunked","mcpTool":"create_page"} |
| "Append Singapore events to a Google Sheet" | Export/delivery | {"location":"singapore","deliveryMode":"perEvent","mcpTool":"append_row","mcpArguments":{"values":["{title}","{dateTime}","{eventLocation}","{url}"]}} |
| "Export a city's event list to Excel" | Export | {"location":"<city>","limit":100} then dataset export |
| "Give me event venues in Surat so I can enrich them" | Venue seeding | {"location":"surat","limit":100} then read Location |
| "Compare event volume across Indian cities" | Market research | One run per city, compare itemCount |
Should NOT route here: Eventbrite / Meetup / Luma / 10times / Facebook events · ticket purchasing · attendee or organizer contact data · category-, date- or price-filtered searches · multi-city or multi-platform aggregation in a single run · generic "scrape any website" requests.
🧭 Agent Execution & Routing Logic
[Input User Query]│▼1. Target is allevents.in public listings? NO → Route to alternative platform Actor│ YES▼2. Operation is read/scrape (not ticket checkout)? NO → Abort (transactional ops unsupported)│ YES▼3. Is the data public (not attendee/organizer PII)? NO → Reject│ YES▼4. Needs category / date / price filtering? YES → Route to Smart Event Scraper│ NO▼5. Can the city map to a single lowercase slug? NO → Prompt user for the exact city│ YES (verify at allevents.in/<slug>/all)▼6. Desired volume > 100 items, or > 1 city? YES → Partition into sequential runs, dedupe on URL│ NO▼7. Residential proxy available on this plan? NO → Warn: empty-page risk; try apifyProxyGroups ["AUTO"]│ YES▼8. Deliver to a connector? YES → Set mcpConnector + mcpTool + {message} in mcpArguments│ NO → set deliveryMode "none"▼9. Is estimated cost within budget? NO → Reduce limit / set maxTotalChargeUsd / prompt user│▼[Execute Apify Actor]│├──► status == "SUCCEEDED" → check itemCount (0 = valid empty result; check slug + proxy) → consume dataset (dedupe via 'URL')└──► status == "FAILED" → route to Error Handling Matrix above
💰 Cost Control & Pricing Transparency
- Pay-per-event pricing: $1.00 per 1,000 events ($0.001 per event, charged as the
event-scrapedevent). No monthly minimums — pay strictly for extracted records. - Free Apify plans receive up to 5 results per run as a preview, with an upgrade notice in the log.
- Autonomous spend caps: pass
maxTotalChargeUsdas a query parameter on the run endpoint to guarantee a hard billing limit per execution — important for any agent spending on your behalf.
| Scraped Results Volume | Total Cost (USD) |
|---|---|
| 5 events (free-plan preview) | $0.00 |
| 50 events (default run) | $0.05 |
| 100 events (single-run ceiling) | $0.10 |
| 1,000 events (batched across 10 runs) | $1.00 |
| 10,000 events (batched across 100 runs) | $10.00 |
⚠️ Verify before publishing: these figures assume a pay-per-event Store configuration with a single
event-scrapedevent priced at $0.001. Confirm the Actor's live pricing configuration matches before publishing the listing.
🔍 Companion machine-readable files
| File | Purpose |
|---|---|
.actor/actor.json | Identity, version, memory limits, storage and readme wiring |
.actor/input_schema.json | Authoritative typed input contract — location, limit range, proxy editor, deliveryMode enum |
.actor/dataset_schema.json | Output field metadata and the Console table view — consumed by the Apify MCP server to describe results to agents |
.actor/output_schema.json | Declares where results are stored |
src/main.py | Scrape orchestration, plan gating, and MCP delivery |
src/connector.py | MCP connector session handling and {placeholder} rendering |
If any table on this page disagrees with the schema files, the schema files win.
🛠️ Troubleshooting
Most failed runs are input formatting or proxy issues, not scraper failures. Work through this section top to bottom — the first three rows account for the large majority of support tickets.
Quick symptom → fix table
| # | Symptom you see | Most likely cause | Fix |
|---|---|---|---|
| 1 | SUCCEEDED but itemCount: 0, log says No event cards detected | The exit IP was served an empty page | Set apifyProxyGroups: ["RESIDENTIAL"] and a country near the city, then retry. |
| 2 | SUCCEEDED but itemCount: 0, log shows an odd URL | location was not a clean slug ("Mumbai, India", "new york", "india--mumbai") | Use one lowercase slug: mumbai, new-york. Verify at allevents.in/<slug>/all. |
| 3 | Results are from Ahmedabad and you never asked for Ahmedabad | location was omitted; it defaults to Ahmedabad and raises no error | Always pass location explicitly from API / MCP / SDK calls. |
| 4 | Exactly 5 results every time | Free Apify plan cap | Upgrade the plan; the log prints the upgrade banner. |
| 5 | Never more than 100 results | Hard per-run ceiling; limit above 100 is clamped | Schedule repeat runs and dedupe downstream on URL. |
| 6 | Consumer code crashes on item["title"] | Output keys are PascalCase | Use Title, URL, DateTime, Location, Interested. |
| 7 | Date parsing fails | DateTime is a display string like "Sun, 09 Aug, 2026 - 08:30 PM" | Parse with a tolerant parser (dateutil) and attach the city timezone yourself. |
| 8 | Interested won't cast to int | It is a display string like "1511+ Interested" | Strip non-digits before casting; treat "" as unknown, not zero. |
| 9 | Some cards are missing from the dataset | Ad/placeholder cards with no title are skipped by design, and duplicates are removed by URL | Expected behaviour. |
| 10 | Fewer results than limit on a busy city | Scroll budget (15 passes) or the 180s scrape ceiling hit first | Lower limit, or run repeatedly and merge on URL. |
| 11 | Log: Scrape exceeded 180s — stopping early | Slow hydration/scroll on that run | Partial results were saved; re-run with a smaller limit. |
| 12 | Log: Navigation timed out → Failed to load page | 30s navigation ceiling reached | Retry; if persistent, change proxy country or group. |
| 13 | Log: Proxy setup failed … falling back to direct connection | No proxy access on this plan / bad proxy input | Upgrade for residential, or use apifyProxyGroups: ["AUTO"]. |
| 14 | No category or date filter in the input | This Actor has none | Filter downstream, or use Smart Event Scraper. |
| 15 | Duplicate events across scheduled runs | Deduplication is per-run only | Dedupe downstream on URL — it is the canonical unique key. |
| 16 | Slack / Notion / Sheets received nothing | Delivery needs both mcpConnector and mcpTool; otherwise it is skipped with a warning | Set both. The dataset is still written in full — your data is never lost. |
| 17 | Log: APIFY_MCP_PROXY_URL is not set | You ran locally with apify run; connectors only resolve on the platform | Deploy with apify push and run on the platform. |
| 18 | Connector fired, but the message body is empty | mcpArguments did not reference {message} | Map {message} in mcpArguments and populate mcpMessageTemplate. |
| 19 | Delivery fired when you only wanted a dataset | deliveryMode defaults to summary, not none | Set deliveryMode: "none" or leave mcpConnector empty. |
| 20 | HTTP 401 / 403 | Missing, expired, or malformed APIFY_TOKEN | Regenerate in Apify Console → Settings → API & Integrations, send as Authorization: Bearer <token>. |
| 21 | HTTP 429 | Apify account concurrency / rate limits — not AllEvents blocking | Retry with exponential backoff (2s → 4s → 8s). |
| 22 | HTTP 408 on run-sync-get-dataset-items | The synchronous endpoint has a hard 300-second ceiling | Switch to async: POST /runs → poll /actor-runs/<runId> → fetch dataset. |
Finding the correct city slug
The slug mirrors AllEvents' own URL path segment, so you can always verify it at the source:
- Open
https://allevents.in/ahmedabad/all(or search your city on allevents.in). - Look at the path segment immediately after the domain.
- Copy it verbatim into
location.
Rules: all lowercase · single hyphens inside multi-word names · no country prefix · no spaces, no commas, no state or ZIP codes.
| ❌ Wrong | ✅ Correct |
|---|---|
Mumbai, India | mumbai |
india--mumbai | mumbai |
New Delhi | new-delhi |
new york, ny | new-york |
London, UK | london |
Diagnostic checklist before opening an issue
- Baseline run.
location= a slug you copied from an allevents.in URL,limit=10,deliveryMode: "none", residential proxy on. - Results returned? If yes, scale
limitback up — the issue is volume or timing, not the slug. - Still zero? Swap the proxy (group and country) and re-run. Empty pages on datacenter IPs are the single most common cause.
- Still zero? Open the same city page in a browser. If AllEvents itself shows nothing, this is a valid empty result, not a bug.
- Check the run log in the Console Log tab for the resolved input and the final URL the Actor built. This immediately exposes a silently-defaulted
location.
If the issue survives all five steps, open an Issues ticket on the Actor page (or email support) with the run ID, the exact input JSON, and what you expected. Run IDs let us replay the exact execution.
ℹ️
itemCount: 0is a successful run, not an error. A city with no public listings returns an empty dataset with statusSUCCEEDED.
❓ FAQ
Setup & access
Do I need an AllEvents.in account or API key?
No. The Actor reads publicly available listing pages only. You need an Apify account and API token; you need no AllEvents credentials whatsoever.
Is this the official AllEvents.in API?
No. This is an independent Actor and is not affiliated with, endorsed by, or sponsored by AllEvents.in.
Do I need to configure proxies?
Yes — and it matters here more than on most Actors. AllEvents frequently serves an empty page to datacenter IPs, so the schema defaults to RESIDENTIAL with country IN. Residential groups require a paid Apify plan.
Can I use this from Make, Zapier, n8n, or a webhook?
Yes. Any tool that can call the Apify API can call this Actor. Use the async pattern for larger runs so you don't hit the 300-second sync ceiling.
Can I plug it into Claude, Cursor, or a LangChain agent?
Yes — it is a native MCP tool:
claude mcp add --transport http apify "https://mcp.apify.com?tools=techforce.global/all-events-scraper"
Input & filtering
Can I filter by category, date, or price?
No. The search surface is a single city page. Filter downstream on Title/DateTime, or use Smart Event Scraper which supports filters across six platforms.
Can I scrape several cities in one run?
No — one run per city. Loop the Actor in your orchestration layer, or use Smart Event Scraper for breadth in a single run.
Can I search by keyword?
No. Pull the city feed and filter downstream on Title.
Output & data
Why are the output keys capitalized?
The dataset uses Title, URL, DateTime, Location, Interested for backward compatibility with existing consumers. All five keys are always present; missing values are empty strings.
Why isn't DateTime an ISO timestamp?
It is captured verbatim from the listing card, which is a localized display string. Parsing it into ISO would require guessing a timezone; we leave that choice to you.
Can I get organizer emails or attendee lists?
No. The Actor returns public listing-card fields only.
Delivery
What is the MCP connector for?
It pushes the scraped events straight into a tool you have already authorized on your Apify account — Slack, Notion, Google Sheets, Airtable, or any MCP-compatible connector — with no glue code. The dataset is always saved regardless.
Which delivery mode should I use?
summary for a digest, chunked for long lists into services with request caps (Notion), perEvent for row-per-event targets (Sheets/Airtable), none for dataset-only runs.
Does delivery work when running locally?
No. Connectors resolve through the Apify MCP Proxy, which only exists on the platform. Locally you'll see APIFY_MCP_PROXY_URL is not set and the dataset is saved as normal.
Limits & pricing
How many events can one run return?
- Beyond that, schedule repeat runs and merge the datasets on
URL.
What does it cost?
$0.001 per event — $1.00 per 1,000 results. Pay-as-you-go, no monthly minimum.
How do I guarantee an agent never overspends?
Pass maxTotalChargeUsd as a query parameter on the run endpoint. It is a hard per-execution ceiling.
🔗 Related Actors
Other event platforms
AllEvents is one slice of the event ecosystem. Use these when your target platform is different — or when you want the same city covered from several sources at once.
| Actor | Best for | Why pick it over this one |
|---|---|---|
| Smart Event Scraper | Multi-platform aggregation — AllEvents, Eventbrite, Meetup, District, EventsEye & ConferenceAlerts in one clean dataset | You want maximum coverage for a city, plus category and date filters, without orchestrating six Actors |
| Universal Event Scraper | Four specialised scrapers (AllEvents.in, EventsEye.com, District.in, Meetup.com) in a single run | You need a combined feed across those four sources specifically |
| Eventbrite Scraper | Eventbrite events with category, date-range, free-only and online-only filters plus organizer details | You need filtering, ticket pricing, or organizer lead data |
| Meetup City Events Scraper | Meetup.com events by city — community and recurring group events | Grassroots tech/hobby meetups are under-represented on AllEvents |
| Events Eye Scraper | EventsEye.com — B2B trade shows and exhibitions with venue and organizer detail | Trade shows and expos rarely list on AllEvents |
Enrichment & downstream pipeline
| Actor | Use it for |
|---|---|
| Google Maps Scraper – Business Data | Turn the Location string into a full business record — coordinates, ratings, opening hours, contact details |
| Advanced Website Crawling Actor | Crawl each event page from URL for clean HTML/Markdown/text context |
| GOV.UK Business Scraper | Match UK venue or promoter names against Companies House records |
Suggested pipeline patterns
📰 Automated city event digest
All Events Scraper on a daily schedule → deliveryMode: "summary", mcpConnector: "slack", mcpTool: "send_message" → posts straight into your channel with no glue code.
🗺️ City event intelligence dashboard
Smart Event Scraper for breadth → All Events Scraper for local depth → Google Maps Scraper to enrich Location → append to Google Sheets / Airtable via deliveryMode: "perEvent".
📈 Traction tracking
Daily runs for one city → dedupe on URL → snapshot Interested over time → surface the events gaining momentum fastest.
🔎 Event page enrichment
All Events Scraper → Advanced Website Crawling Actor on each URL → extract full descriptions, ticket links, and promoter details into your own store.
Browse all Actors by Techforce Global at apify.com/techforce.global.
🔐 Compliance & Data Privacy
This is an independent, community-maintained Actor. It is not affiliated with, endorsed by, or sponsored by AllEvents.in. "AllEvents" and "AllEvents.in" are trademarks of their respective owner.
This Actor collects publicly available event listing data only. It does not access accounts, bypass authentication, or retrieve personal data of attendees or ticket buyers. You are responsible for ensuring your use complies with AllEvents.in's Terms of Service, applicable data-protection law (including GDPR and CCPA), and any local regulations. Event titles and venue strings can occasionally contain personal names — handle accordingly.
🆘 Support & Custom Pipeline Engineering
Need automated multi-city scheduled feeds, webhook enrichment, or enterprise data warehouse syncs?
- Email: bhavin.shah@techforceglobal.com
- Custom Enterprise Integrations: Book a 15-Minute Technical Consultation
- Maintained by: Techforce Global — Specialists in High-Performance Web Scrapers and Agentic Workflows.
Made with ❤️ by Techforce Global Specialists in High-Performance Event Data Extraction and AI Automation.
🏷️ Structured data for search & AI discovery
{"@context": "https://schema.org","@type": "SoftwareApplication","name": "All Events Scraper (AllEvents.in) — City Event Listings, Venues & Dates","applicationCategory": "DeveloperApplication","operatingSystem": "Cloud (Apify platform)","description": "Extracts structured event data from allevents.in city listing pages — title, date/time, venue, interest count and event URL — with optional delivery to Notion, Slack, Google Sheets, Airtable, or any authorized MCP connector.","url": "https://apify.com/techforce.global/all-events-scraper","offers": {"@type": "Offer","price": "1.00","priceCurrency": "USD","description": "Per 1,000 results"}}