Developers · static JSON · CC BY 4.0
Public yoga data API for the Philippines
Four static JSON files give the directory's public data to anyone who wants to build on it: 177 verified studios with published prices, 35 upcoming events, the Yoga Price Index and 85 poses. No key, no sign-up. The data is CC BY 4.0: credit YogaPhilippines.com with a link.
Endpoints
| File | What it holds | Records |
|---|---|---|
| https://yogaphilippines.com/api/studios.json | Every verified studio in the directory with its public fields and published prices. | 177 |
| https://yogaphilippines.com/api/events.json | Upcoming public yoga events (past events drop off at each build). | 35 |
| https://yogaphilippines.com/api/prices.json | The Yoga Price Index: published-price medians and ranges by area, with the dated price changelog. | 12 |
| https://yogaphilippines.com/api/poses.json | The pose library: names, Sanskrit, type, level, a one-line cue and the line drawing. | 85 |
The figures in the pose files link to https://yogaphilippines.com/api/figures/<id>.svg, the same code-drawn line drawings used on the pose pages.
Licence and attribution
All four files are published under CC BY 4.0. You can use, share and adapt the data, including commercially, as long as you:
- show the credit Data: YogaPhilippines.com (https://yogaphilippines.com/data/), CC BY 4.0 where the data appears (in an app, an about or credits screen is fine);
- link to yogaphilippines.com/data/ (on the web, as a normal link), or link each studio to its
profileURL; - say if you changed, filtered or combined the figures, and do not suggest that YogaPhilippines.com or any studio endorses your project.
As HTML: Data: <a href="https://yogaphilippines.com/data/">YogaPhilippines.com</a>, <a href="https://creativecommons.org/licenses/by/4.0/">CC BY 4.0</a>. Every file repeats the licence, the credit line and this page's address at the top, so they travel with the data. Studio names, logos and prices belong to the studios; check a studio's own page before you rely on a price.
Fields every file shares
| Field | Type | Meaning |
|---|---|---|
| name | string | What the file holds. |
| version | string | API version. Field names only change with a new version. |
| generated | date | Build date (YYYY-MM-DD, Philippine time). |
| verifiedAt | month | Latest verification month across the records (YYYY-MM). |
| license | string | Licence name: CC BY 4.0. |
| licenseUrl | url | Licence text. |
| attribution | string | The credit line to show wherever you use the data. |
| attributionHtml | string | The same credit as HTML with the required links. |
| docs | url | This documentation. |
| count | number | Number of records. |
| records | array | The records (fields below). |
Studios: /api/studios.json
Every verified studio in the directory with its public fields and published prices.
| Field | Type | Meaning |
|---|---|---|
| id | string | Stable id: city slug and studio slug ("makati/jal-yoga-makati"). |
| name | string | Studio name as the studio writes it. |
| city | string | City or municipality. |
| area | string or null | Neighbourhood or district, where known. |
| region | string | Metro Manila, Rest of Luzon, Visayas, Mindanao or Palawan. |
| styles | string[] | Styles the studio publishes. |
| website | url or null | Official website. |
| url or null | Official Instagram account. | |
| dropIn | price or null | Published drop-in: { price, currency, source }. |
| packages | price[] | Published packs and memberships: { label, price, currency, source }. |
| firstClass | price or null | Published intro or first-timer offer: { label, price, currency, source }. |
| verifiedAt | month | Month the listing was last checked (YYYY-MM). |
| profile | url | The studio page on YogaPhilippines.com (link to it when you use the record). |
Example (first record)
{
"name": "YogaPhilippines.com yoga studios",
"version": "1",
"generated": "2026-10-02",
"verifiedAt": "2026-10",
"license": "CC BY 4.0",
"licenseUrl": "https://creativecommons.org/licenses/by/4.0/",
"attribution": "Data: YogaPhilippines.com (https://yogaphilippines.com/data/), CC BY 4.0",
"attributionHtml": "Data: <a href=\"https://yogaphilippines.com/data/\">YogaPhilippines.com</a>, <a href=\"https://creativecommons.org/licenses/by/4.0/\">CC BY 4.0</a>",
"docs": "https://yogaphilippines.com/data/api/",
"count": 177,
"records": [
{
"id": "paranaque/180-yoga-bf-homes",
"name": "180 Yoga",
"city": "Parañaque",
"area": "BF Homes",
"region": "Metro Manila",
"styles": [],
"website": null,
"instagram": "https://www.instagram.com/180.yoga/",
"dropIn": null,
"packages": [],
"firstClass": null,
"verifiedAt": "2026-10",
"profile": "https://yogaphilippines.com/studios/paranaque/180-yoga-bf-homes/"
}
]
}Events: /api/events.json
Upcoming public yoga events (past events drop off at each build).
| Field | Type | Meaning |
|---|---|---|
| id | string | Stable event id (slug). |
| name | string | Event name as the organiser writes it. |
| startDate | datetime | Start: a date, or a date-time with the +08:00 offset when a time is published. |
| endDate | datetime or null | End, when published. |
| eventType | string or null | workshop, class, retreat, training, community and similar. |
| venue | string or null | Venue name, when the organiser has published one. |
| city | string | City or municipality. |
| organizer | string or null | Organiser name. |
| organizerUrl | url or null | Organiser website or account. |
| url | url or null | The organiser's page for the event. |
| priceText | string or null | Price exactly as published, when published. |
| sources | url[] | Pages the event was checked against. |
| calendar | url | An .ics file for this event. |
| verifiedAt | month | Month the event was last checked. |
Example (first record)
{
"name": "YogaPhilippines.com upcoming yoga events",
"version": "1",
"generated": "2026-10-02",
"verifiedAt": "2026-10",
"license": "CC BY 4.0",
"licenseUrl": "https://creativecommons.org/licenses/by/4.0/",
"attribution": "Data: YogaPhilippines.com (https://yogaphilippines.com/data/), CC BY 4.0",
"attributionHtml": "Data: <a href=\"https://yogaphilippines.com/data/\">YogaPhilippines.com</a>, <a href=\"https://creativecommons.org/licenses/by/4.0/\">CC BY 4.0</a>",
"docs": "https://yogaphilippines.com/data/api/",
"count": 35,
"records": [
{
"id": "ohm-mindfulness-yin-chris-su-2026-10-03",
"name": "Mindfulness Yin Yoga by Chris Su",
"startDate": "2026-10-03",
"endDate": null,
"eventType": "workshop",
"venue": "Ohm Yoga",
"city": "San Juan",
"organizer": "Ohm Yoga PH",
"organizerUrl": "https://ohmyogaph.com/",
"url": "https://ohmyogaph.com/events",
"priceText": null,
"sources": [
"https://ohmyogaph.com/events"
],
"calendar": "https://yogaphilippines.com/events/ics/ohm-mindfulness-yin-chris-su-2026-10-03.ics",
"verifiedAt": "2026-10"
}
]
}Prices: /api/prices.json
The Yoga Price Index: published-price medians and ranges by area, with the dated price changelog.
| Field | Type | Meaning |
|---|---|---|
| area | string | Philippines, Metro Manila or a city (cities with 4+ data points per metric only). |
| areaSlug | string or null | City slug as on /yoga/<slug>/ (null for the national and Metro Manila rows). |
| metric | string | drop_in, 10_class_pack or monthly_unlimited. |
| n | number | Studios with a published price for the metric. |
| median | number | Median in PHP. |
| min | number | Lowest published price in PHP. |
| max | number | Highest published price in PHP. |
| p25 | number | 25th percentile in PHP. |
| p75 | number | 75th percentile in PHP. |
| changes (top level) | array | Dated price changes: { date, studio, profile, field, old, new, source }. |
Example (first record)
{
"name": "YogaPhilippines.com Yoga Price Index",
"version": "1",
"generated": "2026-10-02",
"verifiedAt": "2026-10",
"license": "CC BY 4.0",
"licenseUrl": "https://creativecommons.org/licenses/by/4.0/",
"attribution": "Data: YogaPhilippines.com (https://yogaphilippines.com/data/), CC BY 4.0",
"attributionHtml": "Data: <a href=\"https://yogaphilippines.com/data/\">YogaPhilippines.com</a>, <a href=\"https://creativecommons.org/licenses/by/4.0/\">CC BY 4.0</a>",
"docs": "https://yogaphilippines.com/data/api/",
"count": 12,
"records": [
{
"area": "Philippines (all listed studios)",
"areaSlug": null,
"metric": "drop_in",
"n": 44,
"median": 600,
"min": 250,
"max": 1500,
"p25": 500,
"p75": 849
}
],
"changes": [
{
"date": "2026-10-02",
"studio": "BetterLife Studio",
"profile": "https://yogaphilippines.com/studios/paranaque/betterlife-studio-paranaque/",
"field": "Package",
"old": "5-class package (4 weeks): ₱3,500",
"new": "5-class package (5 weeks): ₱3,500",
"source": "https://www.betterlife.studio/package"
}
]
}Poses: /api/poses.json
The pose library: names, Sanskrit, type, level, a one-line cue and the line drawing.
| Field | Type | Meaning |
|---|---|---|
| id | string | Pose id (slug). |
| name | string | English name. |
| sanskrit | string or null | Sanskrit name. |
| url | url | The pose page on YogaPhilippines.com. |
| type | string[] | standing, seated, balance, inversion, backbend, twist and so on. |
| areas | string[] | Body areas the pose works. |
| level | number | 1 (gentlest) to 5. |
| props | string[] | Props that can help. |
| cue | string | One-line cue. |
| figure | url or null | Code-drawn line figure (SVG), where one exists. |
Example (first record)
{
"name": "YogaPhilippines.com pose library",
"version": "1",
"generated": "2026-10-02",
"verifiedAt": "2026-10",
"license": "CC BY 4.0",
"licenseUrl": "https://creativecommons.org/licenses/by/4.0/",
"attribution": "Data: YogaPhilippines.com (https://yogaphilippines.com/data/), CC BY 4.0",
"attributionHtml": "Data: <a href=\"https://yogaphilippines.com/data/\">YogaPhilippines.com</a>, <a href=\"https://creativecommons.org/licenses/by/4.0/\">CC BY 4.0</a>",
"docs": "https://yogaphilippines.com/data/api/",
"count": 85,
"records": [
{
"id": "accomplished-pose",
"name": "Accomplished Pose",
"sanskrit": "Siddhasana",
"url": "https://yogaphilippines.com/poses/accomplished-pose/",
"type": [
"seated",
"hip-opener"
],
"areas": [
"hips",
"ankles",
"spine"
],
"level": 3,
"props": [
"blanket",
"block",
"wall"
],
"cue": "Heels in line, knees heavy, spine tall.",
"figure": null
}
]
}Examples
In a terminal:
curl -s https://yogaphilippines.com/api/studios.json | jq '.records[] | select(.city == "Makati") | .name'In a browser or Node.js (the files send Access-Control-Allow-Origin: *, so they work from any site):
const res = await fetch('https://yogaphilippines.com/api/prices.json');
const { records, attribution } = await res.json();
const dropIn = records.find((r) => r.area === 'Metro Manila' && r.metric === 'drop_in');
console.log(dropIn.median, attribution);In Google Sheets, =IMPORTDATA("https://yogaphilippines.com/data/yoga-studios-philippines.csv") loads the studio list as a sheet; the open data page has the CSV versions.
Rates, caching and changes
- The files are static and served from a CDN, so there is no rate limit to hit. They change at most a few times a week: fetch once a day and cache the result rather than calling on every page view.
- Responses carry an ETag, so a conditional request returns "304 Not Modified" when nothing has changed.
- Field names are stable within
version"1". New fields may be added; nothing is renamed or removed without a new version number. - Records drop out when a studio closes or an event passes. Use
idto match records between fetches. - For updates as they happen, the feeds cover new events, new studios and new pages, and the weekly page lists each week's changes.
Where the data comes from
Every studio is checked against its own website, social accounts or ClassPass listing, as described in how we verify studios, and every price carries the URL where it was published. Aggregates follow the method in the State of Yoga 2026 report. Journalists will find ready-made charts in the press kit. Found an error? Use the corrections page.
Questions
Do I need an API key for the YogaPhilippines.com data?
No. The API is a set of static JSON files on the site's CDN. Fetch them directly from a browser, a script or a spreadsheet; there is no key, sign-up or quota.
How often does the yoga data API change?
The files are rebuilt every time the site is, at least weekly when studios, prices and events are re-checked. The "generated" field gives the build date and "verifiedAt" the latest verification month.
What attribution does the CC BY 4.0 licence need?
Show the credit line "Data: YogaPhilippines.com (https://yogaphilippines.com/data/), CC BY 4.0" near where the data appears, with a link to yogaphilippines.com/data/, and say if you changed or combined the figures.
Updated