All Events Scraper avatar

All Events Scraper

Pricing

from $1.00 / 1,000 results

Go to Apify Store
All Events Scraper

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

Techforce Global

Maintained by Community

Actor stats

6

Bookmarked

108

Total users

8

Monthly active users

0.19 hours

Issues response

8 days ago

Last modified

Share

All Events Scraper (AllEvents.in) — Extract City Event Listings, Venues, Dates & Interest Counts

Apify Actor MCP Ready Pricing Target

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 / CapabilityManual browsing or a DIY scraperAll 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 modelYour dev time + infraPay-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: 100
cities_per_run: 1
free_plan_result_cap: 5
category_filter: "not supported"
date_filter: "not supported"
pricing:
model: "pay-per-event"
event_name: "event-scraped"
unit_cost_usd: 0.001
rate_per_1000: 1.00
when_to_use: >
You need a structured feed of public events for a single city from
allevents.in — for event aggregation, local-market research, a city
newsletter, or a directory — especially in India and Southeast Asia
where allevents.in inventory beats Eventbrite.
when_not_to_use: >
You need category, date-range or price filtering; more than 100 events
in one run; several cities in one run; ticket purchasing; or organizer
and 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 limit is 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

ScenarioFit
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 sourcesUse 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)

  1. location is a single city slug, not "City, Country". Pass ahmedabad, mumbai, new-york — never Ahmedabad, India or united-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: open allevents.in/<slug>/all to confirm.
  2. location is 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.
  3. The result field is limit, not maxEvents. Default 50, hard maximum 100. Values above 100 are clamped, not rejected.
  4. Output keys are PascalCase: Title, URL, DateTime, Location, Interested. Lowercase key lookups (item["title"]) will fail.
  5. DateTime and Interested are 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.
  6. There is no category, date, or price filter. Filter downstream on Title/DateTime, or route the request to Smart Event Scraper.
  7. Proxy matters. The schema defaults to RESIDENTIAL + country IN. 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 are 0, the proxy is the first thing to check.
  8. deliveryMode defaults to summary, not none. For dataset-only runs, either leave mcpConnector empty or set deliveryMode: "none" explicitly.
  9. 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: none
platform: "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

FieldTypeRequiredDefaultAllowed Values / FormatExample
locationstring✅ YesAhmedabadCity slug (^[a-z0-9-]+$ after lowercasing)mumbai
limitinteger⬜ No501 to 100 (clamped at 100)100
proxyConfigurationobject⬜ No{ useApifyProxy: true, apifyProxyGroups: ["RESIDENTIAL"], apifyProxyCountry: "IN" }Apify proxy editor objectsee 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.

CitySlugVerify URL
Ahmedabadahmedabadallevents.in/ahmedabad/all
Mumbaimumbaiallevents.in/mumbai/all
New Delhinew-delhiallevents.in/new-delhi/all
New Yorknew-yorkallevents.in/new-york/all
Londonlondonallevents.in/london/all
Singaporesingaporeallevents.in/singapore/all

MCP Delivery Configuration (Optional)

ParameterTypeDefaultDescription
mcpConnectorstring""Authorized MCP connector on your Apify account (e.g., Slack, Notion, Airtable, Google Sheets). Leave empty for dataset-only runs.
deliveryModeenumsummarysummary (single digest) · chunked (split large lists) · perEvent (one call per item) · none.
mcpToolstring""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.
mcpArgumentsobject{}JSON argument template passed to the tool. String leaves support {placeholders}.
mcpMessageTemplatestring""Template rendered and exposed to mcpArguments as {message}.

Placeholders available in mcpArguments and mcpMessageTemplate:

ModePlaceholders
summary{location}, {eventCount}, {eventsText}, {message}
chunkedthe 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.

FieldTypeNullableMeaning
TitlestringNoEvent title as listed on the card. Cards without a title are skipped as ads/placeholders.
URLstringNoCanonical allevents.in event URL — use as the dedupe key
DateTimestringNo (may be "")Site display string, e.g. "Sun, 09 Aug, 2026 - 08:30 PM". Not ISO-8601, no timezone offset.
LocationstringNo (may be "")Venue and city as displayed, e.g. "HK Hall: Ahmedabad"
InterestedstringNo (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 os
from apify_client import ApifyClient
client = 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().items
print(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'
# 1. Start execution with a hard spend limit
curl -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. Poll
curl -H 'Authorization: Bearer <YOUR_APIFY_TOKEN>' \
'https://api.apify.com/v2/actor-runs/<runId>'
# 3. Retrieve when SUCCEEDED
curl -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 CodeDetection ConditionUnderlying CauseDeterministic Agent Action
AUTH_INVALIDHTTP 401Missing or malformed APIFY_TOKENAbort & Prompt User: request a valid API token.
RATE_LIMITEDHTTP 429Apify API rate / concurrency limitsRetry: exponential backoff (2s, 4s, 8s).
SYNC_TIMEOUTHTTP 408 on the sync endpointRun exceeded the 300s synchronous ceilingReconfigure: switch to async POST /runs + polling.
BAD_LOCATIONSUCCEEDED with itemCount: 0, log shows the built URLSlug contains spaces/commas/country prefix, or the city has no AllEvents pageModify Input: pass a single lowercase slug verified at allevents.in/<slug>/all.
PROXY_BLOCKEDitemCount: 0 and log line No event cards detectedPage served empty to the exit IP (common on datacenter IPs)Reconfigure: use RESIDENTIAL group with a country close to the city; retry once.
PROXY_UNAVAILABLELog line Proxy setup failed …; falling back to direct connectionResidential groups require a paid Apify planPrompt User: upgrade the plan, or retry with apifyProxyGroups: ["AUTO"].
NAV_TIMEOUTLog line Navigation timed out, run ends with Failed to load pagePage did not reach domcontentloaded within 30sRetry: re-run once; if it repeats, change proxy country.
SCRAPE_TIMEOUTLog line Scrape exceeded 180s — stopping earlySlow scroll/hydration; partial results were still savedConsume partial data, then re-run with a lower limit.
FREE_PLAN_CAPitemCount: 5 with the upgrade banner in the logFree Apify plan caps results at 5 per runPrompt User: upgrade for the full 100-event run.
CAP_REACHEDitemCount == limit == 100Per-run maximum truncated the result setReconfigure: schedule repeat runs and dedupe downstream on URL.
DELIVERY_SKIPPEDLog line no tool name was providedmcpConnector set but mcpTool emptyModify Input: set mcpTool; the dataset is already saved.
DELIVERY_TOOL_UNKNOWNLog line Tool 'x' is not available on this connectorWrong tool name for that connectorModify Input: pick a name from the Available tools: list in the same log line.
DELIVERY_EMPTYConnector called, body emptymcpArguments omitted the {message} placeholderModify Input: map {message} inside mcpArguments.
CHARGE_LIMITRun aborted before reaching limitmaxTotalChargeUsd spend threshold reachedPrompt 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/429 rows against current platform behavior if you depend on them for automated retry logic.


🗣️ Natural Language → Actor Mapping

User saysIntentConstructed 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 researchOne 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-scraped event). 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 maxTotalChargeUsd as 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 VolumeTotal 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-scraped event priced at $0.001. Confirm the Actor's live pricing configuration matches before publishing the listing.


🔍 Companion machine-readable files

FilePurpose
.actor/actor.jsonIdentity, version, memory limits, storage and readme wiring
.actor/input_schema.jsonAuthoritative typed input contract — location, limit range, proxy editor, deliveryMode enum
.actor/dataset_schema.jsonOutput field metadata and the Console table view — consumed by the Apify MCP server to describe results to agents
.actor/output_schema.jsonDeclares where results are stored
src/main.pyScrape orchestration, plan gating, and MCP delivery
src/connector.pyMCP 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 seeMost likely causeFix
1SUCCEEDED but itemCount: 0, log says No event cards detectedThe exit IP was served an empty pageSet apifyProxyGroups: ["RESIDENTIAL"] and a country near the city, then retry.
2SUCCEEDED but itemCount: 0, log shows an odd URLlocation was not a clean slug ("Mumbai, India", "new york", "india--mumbai")Use one lowercase slug: mumbai, new-york. Verify at allevents.in/<slug>/all.
3Results are from Ahmedabad and you never asked for Ahmedabadlocation was omitted; it defaults to Ahmedabad and raises no errorAlways pass location explicitly from API / MCP / SDK calls.
4Exactly 5 results every timeFree Apify plan capUpgrade the plan; the log prints the upgrade banner.
5Never more than 100 resultsHard per-run ceiling; limit above 100 is clampedSchedule repeat runs and dedupe downstream on URL.
6Consumer code crashes on item["title"]Output keys are PascalCaseUse Title, URL, DateTime, Location, Interested.
7Date parsing failsDateTime is a display string like "Sun, 09 Aug, 2026 - 08:30 PM"Parse with a tolerant parser (dateutil) and attach the city timezone yourself.
8Interested won't cast to intIt is a display string like "1511+ Interested"Strip non-digits before casting; treat "" as unknown, not zero.
9Some cards are missing from the datasetAd/placeholder cards with no title are skipped by design, and duplicates are removed by URLExpected behaviour.
10Fewer results than limit on a busy cityScroll budget (15 passes) or the 180s scrape ceiling hit firstLower limit, or run repeatedly and merge on URL.
11Log: Scrape exceeded 180s — stopping earlySlow hydration/scroll on that runPartial results were saved; re-run with a smaller limit.
12Log: Navigation timed outFailed to load page30s navigation ceiling reachedRetry; if persistent, change proxy country or group.
13Log: Proxy setup failed … falling back to direct connectionNo proxy access on this plan / bad proxy inputUpgrade for residential, or use apifyProxyGroups: ["AUTO"].
14No category or date filter in the inputThis Actor has noneFilter downstream, or use Smart Event Scraper.
15Duplicate events across scheduled runsDeduplication is per-run onlyDedupe downstream on URL — it is the canonical unique key.
16Slack / Notion / Sheets received nothingDelivery needs both mcpConnector and mcpTool; otherwise it is skipped with a warningSet both. The dataset is still written in full — your data is never lost.
17Log: APIFY_MCP_PROXY_URL is not setYou ran locally with apify run; connectors only resolve on the platformDeploy with apify push and run on the platform.
18Connector fired, but the message body is emptymcpArguments did not reference {message}Map {message} in mcpArguments and populate mcpMessageTemplate.
19Delivery fired when you only wanted a datasetdeliveryMode defaults to summary, not noneSet deliveryMode: "none" or leave mcpConnector empty.
20HTTP 401 / 403Missing, expired, or malformed APIFY_TOKENRegenerate in Apify Console → Settings → API & Integrations, send as Authorization: Bearer <token>.
21HTTP 429Apify account concurrency / rate limits — not AllEvents blockingRetry with exponential backoff (2s → 4s → 8s).
22HTTP 408 on run-sync-get-dataset-itemsThe synchronous endpoint has a hard 300-second ceilingSwitch 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:

  1. Open https://allevents.in/ahmedabad/all (or search your city on allevents.in).
  2. Look at the path segment immediately after the domain.
  3. 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, Indiamumbai
india--mumbaimumbai
New Delhinew-delhi
new york, nynew-york
London, UKlondon

Diagnostic checklist before opening an issue

  1. Baseline run. location = a slug you copied from an allevents.in URL, limit = 10, deliveryMode: "none", residential proxy on.
  2. Results returned? If yes, scale limit back up — the issue is volume or timing, not the slug.
  3. Still zero? Swap the proxy (group and country) and re-run. Empty pages on datacenter IPs are the single most common cause.
  4. Still zero? Open the same city page in a browser. If AllEvents itself shows nothing, this is a valid empty result, not a bug.
  5. 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: 0 is a successful run, not an error. A city with no public listings returns an empty dataset with status SUCCEEDED.

❓ 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?

  1. 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.


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.

ActorBest forWhy pick it over this one
Smart Event ScraperMulti-platform aggregation — AllEvents, Eventbrite, Meetup, District, EventsEye & ConferenceAlerts in one clean datasetYou want maximum coverage for a city, plus category and date filters, without orchestrating six Actors
Universal Event ScraperFour specialised scrapers (AllEvents.in, EventsEye.com, District.in, Meetup.com) in a single runYou need a combined feed across those four sources specifically
Eventbrite ScraperEventbrite events with category, date-range, free-only and online-only filters plus organizer detailsYou need filtering, ticket pricing, or organizer lead data
Meetup City Events ScraperMeetup.com events by city — community and recurring group eventsGrassroots tech/hobby meetups are under-represented on AllEvents
Events Eye ScraperEventsEye.com — B2B trade shows and exhibitions with venue and organizer detailTrade shows and expos rarely list on AllEvents

Enrichment & downstream pipeline

ActorUse it for
Google Maps Scraper – Business DataTurn the Location string into a full business record — coordinates, ratings, opening hours, contact details
Advanced Website Crawling ActorCrawl each event page from URL for clean HTML/Markdown/text context
GOV.UK Business ScraperMatch 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 ScraperAdvanced 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?


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"
}
}