Calls without X-API-Key need no key. Calls with it need a paid plan — get a key.
Get an API key
Free tier, no form to fill in. Signing in shares your email address with us — we
store it to create your key and to recognise you if you sign in with another
provider. See our Privacy Policy and
Terms.
openapi: 3.2.0
info:
title: Chinafootnotes Com Events API
version: 0.1.0
x-coverage:
cities:
- Shanghai
- Beijing
- Xi’an
- Chengdu
- Chongqing
- Hangzhou
placeCount: 112
pretripTopicCount: 9
dataVersion: e95b0f4e8deb
generatedAt: '2026-11-03T20:58:20.757Z'
description: 'Operations tagged Events across 2 of this provider''s published API definitions: chinafootnotes-com-openapi.json, chinafootnotes-com-openapi.yml. Each path carries the servers of the definition it was published in.'
servers:
- url: /
description: Same origin as this specification
tags:
- name: Events
paths:
/api/events:
get:
operationId: getEvents
summary: Temporary events (festivals, exhibitions, shows, seasonal displays) on or still…
parameters: []
responses:
'200':
description: Events not yet ended, soonest first
content:
application/json:
schema:
$ref: '#/components/schemas/EventList'
'400':
description: Invalid URL encoding
'500':
description: Local data/service unavailable
tags:
- Events
servers:
- url: /
description: Same origin as this specification
components:
schemas:
EventList:
type: object
properties:
schemaVersion:
type: string
version:
type: string
generatedAt:
type: string
format: date-time
notice:
type: string
events:
type: array
items:
$ref: '#/components/schemas/Event'
required:
- events
Event:
type: object
properties:
id:
type: string
kind:
type: string
enum:
- festival
- exhibition
- show
- performance
- seasonal
- other
title:
type: string
startsAt:
type: string
format: date
endsAt:
type: string
format: date
description: Exact end date unless endsAtLabel is present; then this is only the upper bound used for filtering, not a confirmed last day.
when:
type: string
where:
type: string
ticket:
type: string
enum:
- free
- included
- paid
- unknown
price:
type: string
booking:
type: string
text:
type: string
sourceIds:
type: array
items:
type: string
placeId:
type: string
sources:
type: array
items:
$ref: '#/components/schemas/Source'
dates:
type: array
items:
type: string
format: date
description: Specific dates when the event runs, inside startsAt..endsAt
basisNotes:
type: array
items:
type: object
endsAtLabel:
type: string
description: Source-stated end period when the exact day is unknown. Use this label instead of presenting endsAt as an exact date.
required:
- id
- kind
- title
- endsAt
- text
- sourceIds
Source:
type: object
properties:
id:
type: string
url:
type:
- string
- 'null'
format: uri
description: 'null only for our own checks, which have no web page: kind owner_tested (we tried it ourselves; first-hand, not official) or owner_official (the venue''s own answer: method phone, onsite_sign or onsite_notice; official). accessedAt is the day we checked.'
title:
type: string
publisher:
type: string
kind:
type: string
enum:
- official
- government
method:
type:
- string
- 'null'
enum:
- phone
- onsite_sign
- onsite_notice
- null
description: 'Only for kind owner_official: how we got the venue’s answer (by phone, a standing sign on site, or a temporary notice on site).'
contact:
type:
- string
- 'null'
description: 'Only for method phone: who we called (venue and number).'
accessedAt:
type: string
format: date
publishedAt:
type:
- string
- 'null'
format: date
required:
- id
- url
- title
- publisher
- kind
- accessedAt
x-refined-from:
- chinafootnotes-com-openapi.json
- chinafootnotes-com-openapi.yml