Discover/Fresha API
live

Fresha APIfresha.com

Search Fresha salons and spas, retrieve service pricing, check appointment availability, and browse help center articles via a single structured API.

Endpoint health
verified 4d ago
get_knowledge_base_article
search_knowledge_base
get_knowledge_base_category
get_business_details
get_knowledge_base_categories
9/9 passing latest checkself-healing
Endpoints
9
Updated
26d ago

What is the Fresha API?

The Fresha API exposes 9 endpoints covering the full Fresha beauty and wellness marketplace: search businesses by location and keyword, pull detailed venue profiles with service pricing and working hours, and check real appointment availability by date. The search_businesses endpoint returns paginated results including each business's rating, review count, address, and service list, with a slug you carry forward to get_business_details and get_availability.

Try it
Pagination cursor from a previous response's endCursor field.
Number of results to return per page.
Search keyword (e.g. 'hair salon', 'massage', 'nails').
Latitude of the search location.
Longitude of the search location.
api.parse.bot/scraper/bf942bc5-c330-41c8-adb7-3648c24f18e1/<endpoint>
Ready to send
Fill in the parameters and hit sign in to send to see live response data here.
Call it over HTTPgrab a free API key at signup
curl -X GET 'https://api.parse.bot/scraper/bf942bc5-c330-41c8-adb7-3648c24f18e1/search_businesses?after=WzEuMCwxLjE2MzA4NjMxMjQ3NDY4NDIsMjYyODA3MV0%3D&limit=5&query=massage&latitude=40.7128&longitude=-74.006' \
  -H 'X-API-Key: $PARSE_API_KEY'
Python SDK · recommended

Typed, relational, agent-ready

A generated client with real types, enums, and the links between objects — the structure a flat JSON response can't carry. Autocompletes in your editor and reads cleanly to coding agents.

  • Fully typed · autocompletes
  • Objects link to objects
  • Typed errors & pagination

Typed Python client. Set up the SDK in your uv project, then pull this API’s typed client:

uv add parse-sdk
uv run parse init
uv run parse add --marketplace fresha-com-api

uv run parse add --marketplace pulls a pinned snapshot of this canonical API — it won’t change underneath you. To customize it, subscribe and swap to your own copy.

"""Fresha API — discover beauty & wellness businesses, check availability, and browse help articles."""
from parse_apis.fresha_api import Fresha, CategorySlug, BusinessNotFound

client = Fresha()

# Search businesses near NYC
for biz in client.businesses.search(query="massage", latitude=40.7128, longitude=-74.006, limit=3):
    print(biz.name, biz.rating, biz.slug)

# Get detailed info for a specific business by slug
try:
    detail = client.businesses.get(slug="tribeca-hair-studio-nyc-new-york-74-chambers-st-k6zp5nas")
    print(detail.name, detail.reviews_count)
except BusinessNotFound as exc:
    print(f"Business not found: {exc.slug}")

# Check appointment availability for a business on a date
biz = client.business(slug="tribeca-hair-studio-nyc-new-york-74-chambers-st-k6zp5nas")
for slot in biz.time_slots.list(date="2026-06-20", limit=5):
    print(slot.label, slot.start_time)

# Browse knowledge base categories and drill into articles
kb_cat = client.knowledgebasecategory(slug="calendar")
for article in kb_cat.articles.list(limit=3):
    full = article.details(category_slug=CategorySlug.CALENDAR)
    print(full.title, full.url)

# Search the knowledge base
for hit in client.articlehits.search(query="booking", limit=3):
    print(hit.title, hit.preview_description)

print("exercised: businesses.search / businesses.get / time_slots.list / articles.list / article.details / articlehits.search")
All endpoints · 9 totalmissing one? ·

Search for beauty and wellness businesses by location and optional keyword. Returns paginated results with business details, services offered, ratings, and pricing. Each result includes the business slug needed for get_business_details and get_availability. Pagination uses cursor-based navigation via the endCursor field.

Input
ParamTypeDescription
afterstringPagination cursor from a previous response's endCursor field.
limitintegerNumber of results to return per page.
querystringSearch keyword (e.g. 'hair salon', 'massage', 'nails').
latitudenumberLatitude of the search location.
longitudenumberLongitude of the search location.
Response
{
  "type": "object",
  "fields": {
    "count": "integer total number of matching businesses",
    "edges": "array of business objects each with id, name, slug, rating, reviewsCount, address, currency, description, images, services, and servicesExpandLabel at top level",
    "endCursor": "string pagination cursor for the next page",
    "hasNextPage": "boolean whether more results are available"
  },
  "sample": {
    "data": {
      "count": 447,
      "edges": [
        {
          "id": "283271",
          "name": "Tribeca Hair Studio NYC",
          "slug": "tribeca-hair-studio-nyc-new-york-74-chambers-st-k6zp5nas",
          "rating": 5,
          "address": {
            "latitude": 40.714,
            "longitude": -74.007,
            "simpleFormatted": "74 Chambers St, New York"
          },
          "currency": "USD",
          "services": [
            {
              "id": "22346906",
              "name": "Haircut (Barbering)",
              "caption": "20 min - 45 min",
              "formattedRetailPrice": "from $55"
            }
          ],
          "description": "Tribeca Hair Studio was built on a simple belief: excellence is the standard.",
          "reviewsCount": 2881,
          "servicesExpandLabel": "View 54 matching services"
        }
      ],
      "endCursor": "WzEuMCwxLjIwMjEyMTY2MDU2MzcxMTcsNDA3Mjc2XQ==",
      "hasNextPage": true
    },
    "status": "success"
  }
}

About the Fresha API

Business Search and Venue Profiles

The search_businesses endpoint accepts a query string (e.g. 'hair salon', 'massage') plus latitude and longitude coordinates and returns a paginated list of matching venues. Each result node includes id, name, slug, rating, reviewsCount, address, and a services array. Pagination is cursor-based: pass the endCursor value from one response as the after parameter on the next call. The get_business_details endpoint takes a slug from those results and returns the full venue profile — description, contactNumber, working hours, photos, employee profiles, amenities, and a services array with per-service pricing.

Availability and Filtering

get_availability accepts a slug and an ISO date string (YYYY-MM-DD) and returns either actual bookable time slots per service (for Fresha-partnered businesses with online booking enabled) or working hours for that day (for non-partnered listings). Each service entry in the response includes service_id, service_name, duration, price, and an available_times array, plus a has_more_times flag. The booking_type field distinguishes 'online' from 'call_to_book' venues. get_search_filters returns location-specific facets — highlights (e.g. Pet-friendly), amenities (e.g. Parking, Sauna), and values (e.g. Woman-owned, LGBTQ+) — useful for building filter UIs without hardcoding options.

Categories and Discovery

get_business_categories returns all treatment and service categories available on the Fresha marketplace, each node containing an id, name, and icon, alongside suggested locations. This endpoint requires no parameters and is useful for populating category browsers or validating query values before passing them to search_businesses.

Help Center Knowledge Base

Three endpoints cover the Fresha Help Center. get_knowledge_base_categories lists all top-level categories with title, slug, and url. get_knowledge_base_category takes a category_slug and returns article stubs with title, description, url, and slug. get_knowledge_base_article takes both article_slug and category_slug and returns the full article content, thumbnail, and description. search_knowledge_base runs a full-text search over articles and returns hits with previewDescription, categorySlug, and thumbnailImage, plus an estimatedTotalHits count.

Reliability & maintenanceVerified

The Fresha API is a managed, monitored endpoint for fresha.com — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when fresha.com changes and a check fails, the API is automatically queued for repair and re-verified. It is built to keep working as the site underneath it changes.

This isn't an official fresha.com API — it's an independent, maintained REST wrapper over public data. Where the source has no official API (or only a limited one), Parse gives you a stable contract over a source that never promised one, and keeps it current. Need a new endpoint or field? You can revise it yourself in plain English and the agent rebuilds it against the live site in minutes — contributing the change back to the shared API is free.

Last verified
4d ago
Latest check
9/9 endpoints passing
Maintenance
Monitored & self-healing
Will this API break when the source site changes?+
It's built not to. Every endpoint is health-checked on a schedule with automated test probes. When the source site changes and a check fails, the API is automatically queued for repair and re-verified — that's the self-healing layer. Each API page shows when its endpoints were last verified. And because marketplace APIs are shared, any fix reaches everyone using it.
Is this an official API from the source site?+
No — Parse APIs are independent, managed REST wrappers over publicly available data. That is the point: where a site has no official API (or only a limited one), Parse gives you a maintained, monitored endpoint for that data and keeps it working as the site changes — so you get a stable contract over a source that never promised one.
Can I fix or extend this API myself if I need a new endpoint or field?+
Yes — and you don't have to wait on us. This API was generated by the Parse agent, which stays attached. Describe the change in plain English ("add an endpoint that returns reviews", "fix the price field") in the revise box on the API page or via the revise_api MCP tool, and the agent rebuilds it against the live site in minutes. Contributing the change back to the public API is free.
What happens if I call an endpoint that has an issue?+
Errors are machine-readable: a bad call returns a clean status with the list of available endpoints and a repair hint, so an agent (or you) can recover or trigger a fix instead of failing silently. Confirmed failures feed the automatic repair queue.
Common use cases
  • Build a location-aware salon finder that surfaces nearby businesses with ratings, reviews, and service pricing from search_businesses.
  • Display real-time appointment availability for a specific venue and date using get_availability service slots and booking_type flags.
  • Aggregate service menus and pricing across multiple venues in a city using get_business_details for competitive analysis.
  • Populate a category and filter browse UI without hardcoding values by pulling data from get_business_categories and get_search_filters.
  • Index Fresha Help Center documentation into an internal knowledge base using search_knowledge_base and get_knowledge_base_article.
  • Track new business listings in a metro area over time by paginating search_businesses results with the cursor-based after parameter.
  • Build a booking-type classifier that segments Fresha venues into online-bookable vs. call-to-book using the booking_type field from get_availability.
Pricing & limitsSee full pricing →
TierPriceCredits/monthRate limit
Free$0/mo1005 req/min
Hobby$30/mo1,00020 req/min
Developer$100/mo5,000100 req/min

One credit = one API call regardless of which marketplace API you call. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.

Frequently asked questions
Does Fresha have an official public developer API?+
Fresha offers a partner/integration API documented at https://developers.fresha.com, but it is gated behind a partnership application and is not publicly available for general developer use. This Parse API provides structured access to marketplace data without requiring a Fresha partnership.
What does `get_availability` return for businesses that don't support online booking?+
For non-partnered ('LVP') listings, the endpoint returns the business's working hours for the requested day, the day_of_week string, and contact details. The booking_type field will be 'call_to_book' rather than 'online', and the services array will not include available_times slots.
Does the API return customer photos or uploaded images from venue galleries?+
The get_business_details endpoint includes a photos array for the venue, and get_knowledge_base_article returns a thumbnail URL. Customer-uploaded review photos are not currently exposed as a distinct field. You can fork this API on Parse and revise it to add a dedicated review-photos endpoint.
Can I filter `search_businesses` results by amenities or values like 'Woman-owned'?+
search_businesses accepts query, latitude, longitude, limit, and after as inputs. Passing filter IDs (from get_search_filters) directly as search parameters is not currently supported in the endpoint signature. You can fork this API on Parse and revise the search_businesses endpoint to accept and forward filter facet IDs.
How does pagination work in `search_businesses`?+
The response includes an endCursor string and a hasNextPage boolean. Pass endCursor as the after parameter in your next request to retrieve the following page. If hasNextPage is false, you have reached the last page. The count field in the response gives the total number of matching businesses across all pages.
Page content last updated . Spec covers 9 endpoints from fresha.com.
Related APIs in MarketplaceSee all →
hipages.com.au API
Search for local service businesses on hipages.com.au, view detailed business profiles and customer reviews, and explore available service categories all in one place. Find the right tradesperson or service provider by browsing ratings, contact information, and customer feedback.
serviceseeking.com.au API
Search and browse job postings and local service providers across Australia on ServiceSeeking.com.au. View detailed business profiles, ratings, pricing, and explore hundreds of service categories — from tradespeople to home services and beyond.
yelp.com API
Search for businesses on Yelp and access their detailed information including reviews, photos, and ratings all from one interface. Get comprehensive business data like hours, contact details, and customer feedback without visiting Yelp directly.
fazaa.com API
Search and browse offers, categories, and locations on Fazaa.ae, plus access membership benefits and special services like used cars, long-term leases, daily rentals, and Amakin deals. Find services near you on an interactive map and get detailed information on any offer that interests you.
canada.businessesforsale.com API
Search and browse businesses for sale and franchise opportunities across Canada, retrieving detailed listing information to find investment opportunities that match your interests. Explore comprehensive data on available businesses and franchises to make informed decisions about potential acquisitions.
flippa.com API
Search and browse digital assets like websites, domains, and SaaS businesses listed on Flippa's marketplace, with detailed filtering by country and listing details. Access comprehensive information on thousands of digital business listings to find investment opportunities or monitor the market.
bizbuysell.com API
Search for businesses available for sale across multiple categories and view detailed information about specific listings on BizBuySell.com. Browse business categories to explore different industries and find opportunities that match your investment interests.
yelp.com.au API
Search and compare businesses across Yelp Australia by location. Retrieve detailed business information including ratings, categories, and contact details, and access paginated customer reviews with author profiles and rating distributions.