Operated by Sourcelane✓ verified
A location-and-keyword driven events scraper that searches Eventbrite and Meetup in a single run to produce normalized, deduplicated event records for a city and date range. Outputs per-event metadata including title/link/description and source, timing as timezone-aware ISO-8601 start/end timestamps, online/free flags and ticket price range with currency, venue details and geolocation (address, city, region, country, latitude/longitude), attendance and capacity figures (RSVPs or ticket limits), category and topic tags, image link, and organizer identity with follower/member counts and optional total events hosted; each record also indicates which keyword matched and when it was scraped. Technical capabilities include combined scraping of two sites without login or API keys, date-range and online/free filtering, per-site result limits, de-duplication across keywords per site, and an option to perform extra requests to fetch additional organizer details.
Verified Sep 28, 3:55 AM
$0.005
per event
Up to 100 per call. Only pay for results returned; failed calls are refunded.
| Window | Uptime | Success rate | p50 | p95 | Calls |
|---|---|---|---|---|---|
| 24h | — | — | — | — | 0 |
| 7d | — | — | — | — | 0 |
| 30d | — | — | — | — | 0 |
Call it through Sourcelane's gateway or MCP server. We run the connector, apply your agent's spend guardrails, and bill only the results returned.
Call it via Sourcelane
curl -X POST https://api.usesourcelane.com/v1/call \
-H "Authorization: Bearer sl_live_your_agent_key" \
-H "Content-Type: application/json" \
-d '{"listing":"eventbrite-meetup-events-scraper","params":{"location":"San Francisco, CA"},"maxResults":10}'Request params
| Field | Type | Required | Description |
|---|---|---|---|
location | string | required | City to search, e.g. 'San Francisco, CA', 'London', 'Sydney, Australia'. Resolved separately on each site; the best match is used. |
keywords | array | optional | Optional search terms, one per line (e.g. 'startup', 'yoga', 'wine tasting'). Each keyword is searched separately and results are de-duplicated. Leave empty to list all upcoming events in the location. |
dateRange | string | optional | Only return events starting inside this window (evaluated in the location's local time zone). |
includeEventbrite | boolean | optional | Search Eventbrite for matching events. |
includeMeetup | boolean | optional | Search Meetup for matching events. |
onlineOnly | boolean | optional | Return only virtual events. Note: Eventbrite online events are global (not tied to the location); Meetup online events are those promoted to the location. |
freeOnly | boolean | optional | Return only events with free admission. |
maxItemsPerSource | integer | optional | Maximum events to return from each site across all keywords. 0 = keep paginating until the site runs out of results (Eventbrite stops at about 1,000 per keyword) or the run times out. |
fetchOrganizerDetails | boolean | optional | Open each organizer / group page once to fill in total events hosted and exact follower or member counts. Adds one extra request per unique organizer. |
Each result contains
| Field | Type | Description |
|---|---|---|
source | string | Source |
eventId | string | Event Id |
url | string | Url |
title | string | Title |
description | string | Description |
startAt | string | Start At |
endAt | string | End At |
timezone | string | Timezone |
isOnline | boolean | Is Online |
isFree | boolean | Is Free |
minPrice | integer | Min Price |
maxPrice | number | Max Price |
currency | string | — |
venueName | null | — |
address | null | — |
city | null | — |
region | null | — |
country | null | — |
latitude | null | — |
longitude | null | — |
attendeeCount | null | — |
capacity | null | — |
category | string | — |
tags | array | — |
imageUrl | string | — |
organizerName | string | — |
organizerUrl | string | — |
organizerId | string | — |
organizerFollowers | integer | — |
organizerEventCount | null | — |
keyword | string | — |
scrapedAt | string | — |
Pick your tool and connect in under a minute. Then just ask — for example: “What has been reported about solid-state batteries in the last week? Cite sources.”
Connect Claude
Web, desktop and mobile. Paste one URL.
Adds the Sourcelane MCP server with your key as a header.
claude mcp add --transport http sourcelane https://api.usesourcelane.com/mcp \
--header "Authorization: Bearer sl_live_your_agent_key"Alternative to the connector URL: add to claude_desktop_config.json, then restart Claude.
{
"mcpServers": {
"sourcelane": {
"command": "npx",
"args": [
"-y",
"mcp-remote",
"https://api.usesourcelane.com/mcp",
"--header",
"Authorization:${AUTH_HEADER}"
],
"env": {
"AUTH_HEADER": "Bearer sl_live_your_agent_key"
}
}
}
}Add to ~/.cursor/mcp.json (or Windsurf's mcp_config.json).
{
"mcpServers": {
"sourcelane": {
"url": "https://api.usesourcelane.com/mcp",
"headers": {
"Authorization": "Bearer sl_live_your_agent_key"
}
}
}
}Save as .vscode/mcp.json. VS Code prompts for your key once.
{
"servers": {
"sourcelane": {
"type": "http",
"url": "https://api.usesourcelane.com/mcp",
"headers": {
"Authorization": "Bearer ${input:sourcelane-key}"
}
}
},
"inputs": [
{
"type": "promptString",
"id": "sourcelane-key",
"description": "Sourcelane agent key",
"password": true
}
]
}Create a GPT → Actions → Import from URL, then Authentication: API Key, Bearer.
https://usesourcelane.com/openapi.jsonOne POST. Pass maxResults to cap cost.
curl -X POST https://api.usesourcelane.com/v1/call \
-H "Authorization: Bearer sl_live_your_agent_key" \
-H "Content-Type: application/json" \
-d '{"listing":"eventbrite-meetup-events-scraper","params":{"location":"San Francisco, CA"},"maxResults":10}'Wrap the REST call as a tool, or point an MCP client at the endpoint.
import requests
res = requests.post(
"https://api.usesourcelane.com/v1/call",
headers={"Authorization": "Bearer sl_live_your_agent_key"},
json={
"listing": "eventbrite-meetup-events-scraper",
"params": {"location":"San Francisco, CA"},
"maxResults": 10,
},
timeout=300,
)
body = res.json()
print(body["receipt"]["chargedMicros"], "micro-USD for", body["receipt"]["results"], "results")
print(body["data"])—
0 reviews
Leave a review
Loading reviews…