New: the 2026 Yoga Price Index for Metro Manila. See the numbers

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

FileWhat it holdsRecords
https://yogaphilippines.com/api/studios.jsonEvery verified studio in the directory with its public fields and published prices.177
https://yogaphilippines.com/api/events.jsonUpcoming public yoga events (past events drop off at each build).35
https://yogaphilippines.com/api/prices.jsonThe Yoga Price Index: published-price medians and ranges by area, with the dated price changelog.12
https://yogaphilippines.com/api/poses.jsonThe 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 profile URL;
  • 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

FieldTypeMeaning
namestringWhat the file holds.
versionstringAPI version. Field names only change with a new version.
generateddateBuild date (YYYY-MM-DD, Philippine time).
verifiedAtmonthLatest verification month across the records (YYYY-MM).
licensestringLicence name: CC BY 4.0.
licenseUrlurlLicence text.
attributionstringThe credit line to show wherever you use the data.
attributionHtmlstringThe same credit as HTML with the required links.
docsurlThis documentation.
countnumberNumber of records.
recordsarrayThe records (fields below).

Studios: /api/studios.json

Every verified studio in the directory with its public fields and published prices.

FieldTypeMeaning
idstringStable id: city slug and studio slug ("makati/jal-yoga-makati").
namestringStudio name as the studio writes it.
citystringCity or municipality.
areastring or nullNeighbourhood or district, where known.
regionstringMetro Manila, Rest of Luzon, Visayas, Mindanao or Palawan.
stylesstring[]Styles the studio publishes.
websiteurl or nullOfficial website.
instagramurl or nullOfficial Instagram account.
dropInprice or nullPublished drop-in: { price, currency, source }.
packagesprice[]Published packs and memberships: { label, price, currency, source }.
firstClassprice or nullPublished intro or first-timer offer: { label, price, currency, source }.
verifiedAtmonthMonth the listing was last checked (YYYY-MM).
profileurlThe 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).

FieldTypeMeaning
idstringStable event id (slug).
namestringEvent name as the organiser writes it.
startDatedatetimeStart: a date, or a date-time with the +08:00 offset when a time is published.
endDatedatetime or nullEnd, when published.
eventTypestring or nullworkshop, class, retreat, training, community and similar.
venuestring or nullVenue name, when the organiser has published one.
citystringCity or municipality.
organizerstring or nullOrganiser name.
organizerUrlurl or nullOrganiser website or account.
urlurl or nullThe organiser's page for the event.
priceTextstring or nullPrice exactly as published, when published.
sourcesurl[]Pages the event was checked against.
calendarurlAn .ics file for this event.
verifiedAtmonthMonth 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.

FieldTypeMeaning
areastringPhilippines, Metro Manila or a city (cities with 4+ data points per metric only).
areaSlugstring or nullCity slug as on /yoga/<slug>/ (null for the national and Metro Manila rows).
metricstringdrop_in, 10_class_pack or monthly_unlimited.
nnumberStudios with a published price for the metric.
mediannumberMedian in PHP.
minnumberLowest published price in PHP.
maxnumberHighest published price in PHP.
p25number25th percentile in PHP.
p75number75th percentile in PHP.
changes (top level)arrayDated 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.

FieldTypeMeaning
idstringPose id (slug).
namestringEnglish name.
sanskritstring or nullSanskrit name.
urlurlThe pose page on YogaPhilippines.com.
typestring[]standing, seated, balance, inversion, backbend, twist and so on.
areasstring[]Body areas the pose works.
levelnumber1 (gentlest) to 5.
propsstring[]Props that can help.
cuestringOne-line cue.
figureurl or nullCode-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 id to 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