Overview
Publix is the read-only public data surface for MyBusiness location listings. It gives any HTTP client access to a location's profile, menus, categories, products, and media — without touching the authenticated admin API.
What you get from one request
A single POST /graphql call returns a complete listing snapshot:
- Location — display name, brand color, address, coordinates, logo, currency, and category
- Business — name, website, contact email, and phone number
- Menus — ordered list of published menus, each with categories and products
- Products — items with pricing, availability, allergens, nutrition values, and label mentions
Single endpoint
POST https://publix-api.mateality.com/graphql
Publix speaks GraphQL syntax. There is one query root field — listing(slug: $slug) — and you select whichever fields your application needs.
Utility endpoints
| Method | Path | Purpose |
|---|---|---|
GET | /health | Health probe |
Access model
| Listing visibility | Auth required |
|---|---|
public | None — anonymous requests work |
private | Embed key via X-Publix-Embed-Key or bearer token |
disabled | Returns listing: null — treat as unpublished |
discoveryEnabled is separate from visibility. A public listing with discoveryEnabled: false is readable by slug but should not appear in directories or search results.
indexingEnabled tells crawlers and storefronts whether the listing owner wants search engine indexing.
Minimal example
curl -X POST "https://publix-api.mateality.com/graphql" \
-H "content-type: application/json" \
-d '{
"query": "query Listing($slug: String!) { listing(slug: $slug) { slug location { displayName city country } } }",
"variables": { "slug": "green-cafe" }
}'
{
"data": {
"listing": {
"slug": "green-cafe",
"location": {
"displayName": "Green Cafe",
"city": "Bucharest",
"country": "RO"
}
}
}
}
Quickstart → Fetch your first listing in five minutes.
API reference → Every field, type, and status code.