Skip to content
Photobooth Pricing Open the app

For developers

The public package catalog

When a studio turns on Website catalog in the app, its packages are published as JSON that any website can read. Prices are calculated by the same engine as the app and update on their own when the studio changes a package, an item or a setting.

GET https://photoboothpricing.com/catalog/{slug}.json

Fields (schemaVersion 1)

FieldTypeMeaning
schemaVersion1Changes only when the format breaks.
studioNamestringThe studio's display name.
currencystringThe studio's base currency, for example USD.
updatedAtISO 8601When the catalog content last changed.
boothTypes[].namestringBooth type, for example "Open-Air Booth".
boothTypes[].tiers[].namestringTier, in the studio's tier order.
…tiers[].packages[]objectPackages in the tier, cheapest first.
id, namestringStable package id and display name.
clientDescriptionstring | nullCustomer-facing description.
boothType, tierstring | nullThe package's own grouping, null when ungrouped.
durationHoursnumberEvent length in hours.
price, currencynumber, stringFinal client price, rounded to cents.
imageUrlstring | nullAn https image URL, or null.
includedItemsstring[]Names of the items in the package.

Sample response

{
  "schemaVersion": 1,
  "studioName": "Golden Hour Booths",
  "currency": "USD",
  "updatedAt": "2026-10-20T14:05:12.000Z",
  "boothTypes": [
    {
      "name": "Open-Air Booth",
      "tiers": [
        {
          "name": "Gold",
          "packages": [
            {
              "id": "pkg_wedding_gold",
              "name": "Wedding Gold",
              "clientDescription": "Perfect for weddings. Unlimited prints, custom template, on-site attendant.",
              "boothType": "Open-Air Booth",
              "tier": "Gold",
              "durationHours": 4,
              "price": 1395,
              "currency": "USD",
              "imageUrl": "https://example.com/images/wedding-gold.jpg",
              "includedItems": ["Open-air booth", "Unlimited 4x6 prints", "Custom print template", "On-site attendant"]
            }
          ]
        }
      ]
    },
    {
      "name": "Other",
      "tiers": [
        {
          "name": "",
          "packages": [
            {
              "id": "pkg_audio_guestbook",
              "name": "Audio Guest Book",
              "clientDescription": null,
              "boothType": null,
              "tier": null,
              "durationHours": 3,
              "price": 299.5,
              "currency": "USD",
              "imageUrl": null,
              "includedItems": ["Audio guest book phone"]
            }
          ]
        }
      ]
    }
  ]
}

Fetch it

const res = await fetch('https://photoboothpricing.com/catalog/golden-hour-booths.json');
if (!res.ok) throw new Error('Catalog is not published');
const catalog = await res.json();
const money = new Intl.NumberFormat('en-US', { style: 'currency', currency: catalog.currency });

for (const boothType of catalog.boothTypes) {
  for (const tier of boothType.tiers) {
    for (const pkg of tier.packages) {
      console.log(boothType.name, tier.name, pkg.name, money.format(pkg.price));
    }
  }
}

Good to know