~ / endpoints / Event API

Facebook Event Scraper API

Our Facebook event scraper targets a public event page and returns structured JSON: the event name, description, start and end time, location, host, and the attending and interested counts. It reads schema.org event JSON-LD, Open Graph tags, and any embedded event entity. Facebook gates event pages behind a login for logged-out requests, so the endpoint is honest about when an event renders.

Get a free API keyAll Facebook endpoints
1,000
free requests / mo
2.6s
median response
JSON
structured output
US
residential exit
the friction

Getting Facebook Event data is harder than it looks

Facebook gates event pages behind a login for logged-out visitors: the www event URL commonly returns a bare app shell with no event data, and the official Graph API only reads events for Pages you administer. So a populated public event generally needs an authenticated session.

start here

Hit the Facebook Event Scraper API with one request

cURL
curl "https://api.facebookscraperapi.com/api/v1/facebook/event?url=https://www.facebook.com/events/1234567890&api_key=$API_KEY"
Python
import requests

BASE = "https://api.facebookscraperapi.com"
API_KEY = "YOUR_API_KEY"

# Pass an event URL or id. Response follows the documented event shape below.
data = requests.get(
    f"{BASE}/api/v1/facebook/event",
    params={
        "url": "https://www.facebook.com/events/1234567890",
        "api_key": API_KEY,
    },
    timeout=30,
).json()

print(data["name"])
print("when:", data["start_time"], "->", data["end_time"])
print("where:", data["location"])
print("host:", data["host"], "| going:", data["attending_count"])
options

Parameters

ParameterRequiredDefaultNotes
urloptional-A full facebook.com/events/ URL. Required unless you pass id.
idoptional-The numeric event id. One of url or id is required.
countryoptional-Optional two-letter country code to fetch the event as seen from that region.
api_keyrequired-Your API key, passed as a query parameter. Get one free at signup.
the output

The Facebook Event Scraper API output schema

200 OK
{
  "id": "1234567890",
  "url": "https://www.facebook.com/events/1234567890",
  "name": "Downtown Summer Food Festival",
  "description": "A weekend of local food trucks, live music, and family activities in the city park.",
  "start_time": "2026-08-15T17:00:00-05:00",
  "end_time": "2026-08-15T22:00:00-05:00",
  "location": "City Park, Austin, TX",
  "host": "Austin Events Co",
  "attending_count": 1240,
  "interested_count": 5380,
  "cover_image": "https://scontent.xx.fbcdn.net/v/t39.30808-6/example_event_cover.jpg",
  "thumbnail": "https://scontent.xx.fbcdn.net/v/t39.30808-6/example_event_cover.jpg",
  "is_online": false,
  "source": "facebook",
  "data_source": "json-ld"
}
FieldTypeDescription
idstringThe event id from the URL.
urlstringThe canonical event URL.
namestringThe event name from JSON-LD, the event entity, or og:title.
descriptionstringThe event description from JSON-LD, the entity, or og:description.
start_timestringThe event start time, ISO from JSON-LD or the entity's start timestamp.
end_timestringThe event end time when present, in the same form as start_time.
locationstringThe venue or place name from JSON-LD location or the event place.
hoststringThe event host or organizer name when exposed.
attending_countintegerThe going count from the event entity. Null when the entity is not present.
interested_countintegerThe interested count from the event entity. Null when the entity is not present.
cover_imagestringURL of the event cover image. Also returned as thumbnail.
is_onlinebooleanTrue when JSON-LD marks the event as online, otherwise false or null.
data_sourcestringjson-ld, relay-entity, or opengraph, showing where the event fields were read from.
real uses

Build with Facebook data

>

Event discovery

When an event renders, capture name, time, and location to build a feed of events you track in a city or category.
>

Calendar building

Read start_time and end_time to add public events to your own calendar or listings site with clean, structured times.
>

Attendance signals

Use attending_count and interested_count to gauge how much traction an event is getting when the entity is present.
>

Host tracking

Follow the events a specific host organizes by capturing the host name alongside each event you resolve.
>

Venue and location analysis

Segment events by location and the is_online flag to separate in-person from virtual across a set you follow.
>

Session-based pipelines

Because event pages are login-gated logged-out, teams running this with an authenticated session use it to keep event metadata current in their own systems.
why it holds up

Why teams ship on our Facebook Event Scraper API

We force the request onto a US residential exit and merge schema.org event JSON-LD, Open Graph tags, and any embedded event entity, preferring JSON-LD for name, time, and location and the entity for the engagement counts. Event pages are login-gated logged-out, so when only the shell or wall is served the endpoint reports a clear diagnostic instead of a fabricated event.

*

URL or id input

Pass a full event URL or just the numeric id, and we resolve it server side.
*

Three sources merged

JSON-LD, Open Graph, and the embedded event entity are combined, so you get the richest available name, time, location, and counts.
*

Structured times

Start and end times come back as clean ISO strings from JSON-LD or the entity's timestamps, ready for a calendar.
*

Residential routing built in

Requests run through US residential proxies, the best chance of a real event document if a session or relaxed gate allows it.
*

Honest wall handling

Event pages are login-gated logged-out. When only the shell or wall is served, we return a classifiable diagnostic, never a made-up event.
*

Data-source flag

The data_source field shows whether fields came from JSON-LD, the entity, or og tags, so you can gate on quality.
vs diy

How the Facebook Event Scraper API compares

Our APIDIY (requests / headless)Facebook Graph API
Read a public eventWhen it renders, else honest diagnosticUsually a bare CSR shellEvents for Pages you administer only
SetupAPI key onlyResidential proxies, headless browser, parsersMeta app plus a Page access token
Time, location, hostReturned when the event rendersYou parse it yourselfAvailable for your own Pages
Anti-bot and proxiesBuilt in, US residentialYou build and maintain itNot applicable
Attending / interestedFrom the entity when presentYou parse it yourselfVia Insights, admin only
OutputFlat, validated JSONWhatever you parseNested JSON you map yourself
plans & pricing

Pricing built for scale

PlanPriceBest for
Free1,000 requestsTesting and small jobs
Pro$0.60 / 1kProduction workloads
Pay-as-you-go$0.90 / 1kSpiky or one-off volume

Median response 2.6s. You only pay for successful requests.

FAQ

What is a Facebook event scraper?

A Facebook event scraper reads a public event page and returns it in a structured format. Our Facebook event scraper API takes an event URL or id and, when the event renders, returns the name, description, start and end time, location, host, attending and interested counts, and cover image as JSON. The extractor merges schema.org event JSON-LD, Open Graph tags, and any embedded event entity.

Can I scrape a public Facebook event without logging in?

Often not, and the endpoint is honest about it. Facebook gates event pages behind a login for logged-out visitors, and the www event URL commonly returns a bare app shell. When that happens, the endpoint returns a clear diagnostic rather than a fabricated event. For a reliably populated event, run the endpoint with an authenticated session.

What does the event endpoint return when it succeeds?

When an event page renders, you get the event id, canonical URL, name, description, start and end time as ISO strings, location, host, attending and interested counts, cover image, an is_online flag, and a data_source flag showing whether the fields came from JSON-LD, the entity, or og tags. Counts are null when the entity is not present.

Why are attending and interested counts sometimes null?

Those counts live in the embedded event entity, not in JSON-LD or Open Graph. When a page renders JSON-LD and og tags but not the full entity, you still get the name, time, and location, but attending_count and interested_count come back null. We never estimate engagement counts from partial data.

Do I need a Facebook API key or app?

No. You authenticate with a single facebookscraperapi key. The official Graph API only reads events for Pages you administer, so it cannot return a public event on a Page you do not own. Our endpoint reads the public event page when it renders, with no app review. The free tier includes 1,000 requests.

How should I use this endpoint given the login gate?

Treat it as an event endpoint that returns the documented shape when a page renders and reports a classifiable diagnostic when Facebook walls or shells the page logged-out. Teams that need consistent event data run it with an authenticated session, and use the honest failure signal to detect and retry blocked captures instead of accepting empty rows.

Ship with the Facebook Event Scraper API
Test free with 1,000 requests. No credit card needed.
Get a free API key All Facebook endpoints