Discover/Fazaa API
live

Fazaa APIfazaa.com

Access Fazaa.ae offers, categories, cities, membership tiers, used cars, leases, daily rentals, and Amakin venues via 10 structured endpoints.

Endpoints
10
Updated
2mo ago

What is the Fazaa API?

The Fazaa API exposes 10 endpoints covering the full range of content on Fazaa.ae, the UAE employee benefits platform. You can search and filter offers by keyword, city, category, or coordinates using search_offers, fetch full offer details by slug with get_offer_details, retrieve car listings across three transaction types, and look up nearby partners by latitude and longitude — all returning structured JSON with localized English and Arabic fields.

Try it
Page number (0-indexed)
Results per page
Search keyword
City ID for filtering
Category slug (e.g., 'new-offers', 'dining')
Latitude for geolocation search
Longitude for geolocation search
api.parse.bot/scraper/eabc774a-c7ce-4288-8e49-0d748c9ead62/<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/eabc774a-c7ce-4288-8e49-0d748c9ead62/search_offers?page=0&size=20&query=restaurant' \
  -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 fazaa-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.

"""
Fazaa API Client - Parse.bot Integration

Access offers, categories, locations, and special services on Fazaa.ae.
Get your API key from: https://parse.bot/settings
"""

import os
import requests
from typing import Any, Dict, List, Optional


class ParseClient:
    """Client for Fazaa API via Parse.bot scraper service."""

    def __init__(self, api_key: Optional[str] = None):
        """
        Initialize the Parse client.

        Args:
            api_key: API key for Parse.bot. If not provided, reads from PARSE_API_KEY env var.
        """
        self.base_url = "https://api.parse.bot"
        self.scraper_id = "d0159518-70f3-455a-ad7a-d2cb5f42cc2e"
        self.api_key = api_key or os.getenv("PARSE_API_KEY")

        if not self.api_key:
            raise ValueError(
                "API key not provided. Set PARSE_API_KEY environment variable or pass api_key parameter."
            )

    def _call(
        self, endpoint: str, method: str = "POST", **params
    ) -> Dict[str, Any]:
        """
        Make a request to the Parse API.

        Args:
            endpoint: The endpoint name (e.g., 'search_offers')
            method: HTTP method ('GET' or 'POST')
            **params: Query/body parameters

        Returns:
            Response JSON as dictionary
        """
        url = f"{self.base_url}/scraper/{self.scraper_id}/{endpoint}"
        headers = {"X-API-Key": self.api_key, "Content-Type": "application/json"}

        if method.upper() == "GET":
            response = requests.get(url, headers=headers, params=params)
        else:
            response = requests.post(url, headers=headers, json=params)

        response.raise_for_status()
        return response.json()

    def search_offers(
        self,
        category: Optional[str] = None,
        query: Optional[str] = None,
        city_id: Optional[str] = None,
        latitude: Optional[float] = None,
        longitude: Optional[float] = None,
        page: int = 0,
        size: int = 20,
    ) -> Dict[str, Any]:
        """
        Search for offers with filters like category, city, keyword, and coordinates.

        Args:
            category: Category slug (e.g., 'new-offers', 'dining')
            query: Search keyword
            city_id: City ID for filtering
            latitude: Latitude for geolocation search
            longitude: Longitude for geolocation search
            page: Page number (0-indexed)
            size: Results per page

        Returns:
            Dictionary with 'content' (list of offers) and 'total' count
        """
        params = {
            k: v
            for k, v in {
                "category": category,
                "query": query,
                "city_id": city_id,
                "latitude": latitude,
                "longitude": longitude,
                "page": page,
                "size": size,
            }.items()
            if v is not None
        }
        return self._call("search_offers", method="GET", **params)

    def get_offer_details(self, slug: str) -> Dict[str, Any]:
        """
        Get full details of a specific offer using its slug.

        Args:
            slug: The offer slug (e.g., 'indish-indian-restaurant')

        Returns:
            Dictionary with offer details including slug, id, partner, and localData
        """
        return self._call("get_offer_details", method="GET", slug=slug)

    def list_categories(self) -> Dict[str, Any]:
        """
        List all available offer categories.

        Returns:
            Dictionary with 'categories' array containing category objects
        """
        return self._call("list_categories", method="GET")

    def list_cities(self) -> Dict[str, Any]:
        """
        List all available cities grouped by country.

        Returns:
            Dictionary with 'countries' array containing cities
        """
        return self._call("list_cities", method="GET")

    def get_membership_benefits(self) -> Dict[str, Any]:
        """
        Retrieve membership tiers and their associated benefits.

        Returns:
            Dictionary with pageName and localData containing benefit details
        """
        return self._call("get_membership_benefits", method="GET")

    def get_used_cars(self) -> Dict[str, Any]:
        """
        Retrieve listings for Fazaa used cars.

        Returns:
            Dictionary with 'content' array of car listings
        """
        return self._call("get_used_cars", method="GET")

    def get_long_term_car_lease(self) -> Dict[str, Any]:
        """
        Retrieve long-term car lease options.

        Returns:
            Dictionary with 'content' array of lease options
        """
        return self._call("get_long_term_car_lease", method="GET")

    def get_daily_rental(self) -> Dict[str, Any]:
        """
        Retrieve daily car rental offers.

        Returns:
            Dictionary with 'content' array of rental offers
        """
        return self._call("get_daily_rental", method="GET")

    def get_amakin(self) -> Dict[str, Any]:
        """
        Retrieve Fazaa Amakin (places/venues) listings.

        Returns:
            Dictionary with 'content' array of amakin offers
        """
        return self._call("get_amakin", method="GET")

    def find_on_map(self, latitude: float, longitude: float) -> Dict[str, Any]:
        """
        Search for partners/offers near a location.

        Args:
            latitude: Latitude coordinate
            longitude: Longitude coordinate

        Returns:
            Dictionary with 'results' array of nearby locations/partners
        """
        return self._call("find_on_map", method="GET", latitude=latitude, longitude=longitude)


if __name__ == "__main__":
    # Initialize client with API key
    client = ParseClient()

    print("=" * 70)
    print("FAZAA API - PRACTICAL WORKFLOW EXAMPLE")
    print("=" * 70)

    # Step 1: List all categories to understand what's available
    print("\n1. Fetching available offer categories...")
    categories_response = client.list_categories()
    categories = categories_response.get("categories", [])
    print(f"   Found {len(categories)} categories:")
    for cat in categories[:5]:  # Show first 5
        print(f"   - {cat.get('categoryInternalName')} (slug: {cat.get('categorySlug')})")

    # Step 2: Get cities to understand location options
    print("\n2. Fetching available cities...")
    cities_response = client.list_cities()
    countries = cities_response.get("countries", [])
    uae = next((c for c in countries if "Emirates" in c.get("name", "")), None)
    if uae:
        cities = uae.get("cities", [])
        print(f"   Found {len(cities)} cities in UAE:")
        for city in cities[:3]:  # Show first 3
            print(f"   - {city.get('internalName')} (id: {city.get('id')})")
        dubai_id = cities[0].get("id") if cities else None
    else:
        dubai_id = None
        print("   UAE not found in available countries")

    # Step 3: Search for dining offers in Dubai
    if dubai_id:
        print(f"\n3. Searching for dining offers in Dubai...")
        search_response = client.search_offers(
            category="dining", city_id=dubai_id, size=5
        )
        offers = search_response.get("content", [])
        total = search_response.get("total", 0)
        print(f"   Found {total} dining offers (showing {len(offers)}):")

        # Step 4: Get detailed information for each offer
        print("\n4. Retrieving detailed information for offers...")
        for offer in offers:
            offer_slug = offer.get("slug")
            offer_title = offer.get("title", "Unknown")
            partner_name = offer.get("partnerName", "Unknown Partner")

            if offer_slug:
                try:
                    details = client.get_offer_details(offer_slug)
                    local_data = details.get("localData", {})
                    en_data = local_data.get("en", {})
                    description = en_data.get("description", "No description")[:60]
                    partner_info = details.get("partner", {})
                    partner_link = partner_info.get("partnerLink", "No link")

                    print(f"\n   Offer: {offer_title}")
                    print(f"   Partner: {partner_name}")
                    print(f"   Link: {partner_link}")
                    print(f"   Description: {description}...")
                except requests.exceptions.RequestException as e:
                    print(f"\n   Offer: {offer_title}")
                    print(f"   Partner: {partner_name}")
                    print(f"   (Could not retrieve full details: {e})")

    # Step 5: Search by location (find offers near specific coordinates)
    print("\n5. Finding offers near Dubai coordinates (25.2048, 55.2708)...")
    try:
        map_response = client.find_on_map(latitude=25.2048, longitude=55.2708)
        nearby = map_response.get("results", [])
        print(f"   Found {len(nearby)} nearby locations/partners:")
        for location in nearby[:3]:  # Show first 3
            name = location.get("name", "Unknown")
            lat = location.get("lat", "N/A")
            lon = location.get("lon", "N/A")
            print(f"   - {name} ({lat}, {lon})")
    except requests.exceptions.RequestException as e:
        print(f"   Could not find map results: {e}")

    # Step 6: Get membership benefits information
    print("\n6. Fetching membership benefits...")
    try:
        benefits_response = client.get_membership_benefits()
        page_name = benefits_response.get("pageName", "Unknown")
        print(f"   Page: {page_name}")
        local_data = benefits_response.get("localData", {})
        en_content = local_data.get("en", {}).get("pageContent", "No content")[:100]
        print(f"   Content: {en_content}...")
    except requests.exceptions.RequestException as e:
        print(f"   Could not fetch benefits: {e}")

    print("\n" + "=" * 70)
    print("WORKFLOW COMPLETE")
    print("=" * 70)
All endpoints · 10 totalmissing one? ·

Search for offers with filters like category, city, keyword, and coordinates.

Input
ParamTypeDescription
pageintegerPage number (0-indexed)
sizeintegerResults per page
querystringSearch keyword
city_idstringCity ID for filtering
categorystringCategory slug (e.g., 'new-offers', 'dining')
latitudenumberLatitude for geolocation search
longitudenumberLongitude for geolocation search
Response
{
  "type": "object",
  "fields": {
    "total": "total number of results",
    "content": "array of offers"
  },
  "sample": {
    "data": {
      "total": 433,
      "content": [
        {
          "id": "fb45ee29-b547-4138-b0fb-273d923b7767",
          "slug": "smokey-woods-restaurant",
          "type": "OFFER",
          "title": "25% Discount        ",
          "imageUri": "/upload/offers/20241007071240_Untitled-1.jpeg",
          "subTitle": "Smokey Woods Restaurant",
          "locations": [
            {
              "lat": 0,
              "lon": 0,
              "geohash": "",
              "fragment": true
            }
          ],
          "partnerName": "Smokey Woods Restaurant ",
          "serviceLink": null,
          "serviceType": null,
          "serviceSubType": null,
          "localizedServiceLink": null,
          "localizedMobileServiceLink": null
        },
        {
          "id": "9348db43-b1c8-4a4c-8073-f80786f25be9",
          "slug": "beit-el-beiruty-restaurant-and-coffee-shop",
          "type": "OFFER",
          "title": "20% Discount ",
          "imageUri": "/upload/offers/20241205095325_20241205094101_cb6dbe8f-5386-44da-9f41-b9a652388b59.jpg",
          "subTitle": "BEIT EL BEIRUTY RESTAURANT AND COFFEE SHOP",
          "locations": [
            {
              "lat": 0,
              "lon": 0,
              "geohash": "",
              "fragment": true
            }
          ],
          "partnerName": "BEIT EL BEIRUTY RESTAURANT AND COFFEE SHOP",
          "serviceLink": null,
          "serviceType": null,
          "serviceSubType": null,
          "localizedServiceLink": null,
          "localizedMobileServiceLink": null
        },
        {
          "id": "1e2b522f-ed8b-4f42-92b8-c8c134c2a167",
          "slug": "indira-indian-restaurant",
          "type": "OFFER",
          "title": "25% Discount",
          "imageUri": "/upload/offers/indira-indian-restaurant-holiday-inn-cairo-citystars-hotel-1688462822566.jpg",
          "subTitle": " Indira Indian Restaurant- Holiday Inn Cairo - Citystars, hotel",
          "locations": [
            {
              "lat": 30.07430890277261,
              "lon": 31.343801212929684,
              "geohash": "",
              "fragment": true
            }
          ],
          "partnerName": " Indira Indian Restaurant",
          "serviceLink": null,
          "serviceType": null,
          "serviceSubType": null,
          "localizedServiceLink": null,
          "localizedMobileServiceLink": null
        }
      ]
    },
    "status": "success"
  }
}

About the Fazaa API

Offers and Search

search_offers accepts a combination of query, city_id, category (e.g. 'dining', 'new-offers'), and geographic coordinates (latitude, longitude) to return a paginated list of offers. Results include a total count and a content array. Pagination is 0-indexed via the page parameter with a configurable size. get_offer_details takes an offer slug and returns a full record including the id, partner object, and localData with both English and Arabic localized content — useful when building bilingual interfaces.

Taxonomy and Geography

list_categories returns all available category objects, which can be passed as slugs to search_offers. list_cities returns countries with their nested city arrays, including the city_id values needed for location-scoped offer searches. Together these two endpoints give you the complete valid parameter space for the search filter dimensions.

Automotive Services

Three dedicated endpoints cover Fazaa's vehicle services: get_used_cars returns car-sale listings, get_long_term_car_lease returns lease options, and get_daily_rental returns short-term rental offers. Each returns a content array of listings. These are separate endpoints reflecting distinct inventory pools rather than a single filterable vehicle catalog.

Membership, Venues, and Map Search

get_membership_benefits returns tier structure and benefit descriptions in localized localData fields, suitable for rendering a membership comparison page. get_amakin retrieves Fazaa Amakin venue and places listings. find_on_map accepts required latitude and longitude values and returns a results array of nearby partners and offers — the geographic complement to the coordinate filtering available in search_offers.

Reliability & maintenance

The Fazaa API is a managed, monitored endpoint for fazaa.com — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when fazaa.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 fazaa.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.

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 bilingual (EN/AR) UAE deals aggregator using localData fields from get_offer_details
  • Populate a city-scoped offer feed by combining list_cities city IDs with the city_id filter in search_offers
  • Display a membership tier comparison page using benefit data from get_membership_benefits
  • Create a vehicle-finder tool covering used sales, long-term leases, and daily rentals from three dedicated car endpoints
  • Show a live map of nearby Fazaa partners using find_on_map with the device's GPS coordinates
  • Sync offer categories for a UAE employee-benefits app by polling list_categories and search_offers
  • List Amakin venues alongside standard offers in a places-discovery interface using get_amakin
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 Fazaa.ae have an official public developer API?+
Fazaa does not publish a public developer API or API documentation for third-party use. The data on Fazaa.ae is not officially exposed through a documented, publicly accessible developer program.
What does `get_offer_details` return beyond what `search_offers` provides?+
search_offers returns summary-level offer data in a paginated content array. get_offer_details takes a specific slug and returns the full record, including the partner object with partner-level details and the localData block containing localized text in both English and Arabic — fields that are not necessarily included in the search listing response.
Can I filter car listings by make, model, price, or year?+
The three car endpoints (get_used_cars, get_long_term_car_lease, get_daily_rental) currently accept no filter parameters and return full content arrays. Filtering by attributes like make, price range, or year is not exposed at this time. You can fork this API on Parse and revise it to add filter parameters once you've inspected the fields returned in the content array.
How does pagination work in `search_offers`?+
Pagination uses a 0-indexed page parameter combined with a size parameter controlling results per page. The response includes a total field indicating the full result count, so you can calculate the number of pages as ceil(total / size).
Does the API expose individual offer redemption history or user-specific data?+
No user-specific or redemption data is exposed. The API covers publicly visible offer content, categories, cities, membership benefit descriptions, vehicle listings, and venue data. You can fork this API on Parse and revise it to target additional content if Fazaa.ae exposes relevant pages.
Page content last updated . Spec covers 10 endpoints from fazaa.com.
Related APIs in MarketplaceSee all →
fresha.com API
Search for beauty and wellness businesses, view detailed venue information like services and pricing, and browse the help center's knowledge base articles and categories. Find exactly what you need across Fresha's marketplace with powerful filtering and category options.
propertyfinder.ae API
Search and browse properties across the UAE, view detailed listings with agent and broker information, and discover locations all in one place. Find the perfect property, connect with real estate agents, and explore company profiles to make informed decisions.
avis.de API
Search and explore Avis Germany rental locations with autocomplete functionality, view detailed location information and available vehicles, and discover current special offers. Find rental options by country or city to compare fleet availability and pricing.
almosafer.com API
Search and compare flights across multiple airlines with real-time pricing, filtering options, and a fare calendar to find the best deals. Look up airport details and airline information to plan your travel better.
jo.opensooq.com API
Search and browse classified listings on OpenSooq Jordan, discover product categories, and view detailed information about specific items for sale. Access real-time marketplace data to find exactly what you're looking for across multiple categories.
kaufland.de API
Search for current deals and discounts at Kaufland Germany stores, viewing detailed pricing information and offer validity periods. Find nearby store locations and browse the latest promotional products all in one place.
bazos.cz API
Search and browse listings from Bazos.cz, the Czech classifieds marketplace, across all sections including jobs, services, real estate, vehicles, and more. Filter by keyword, location, price range, and category. Retrieve full details for individual listings and explore available categories within any section.
zara.com API
Shop Zara's entire catalog by browsing categories, searching for specific items, and viewing detailed product information including measurements and related products. Find nearby store locations, check real-time inventory availability, and get shipping details all in one place.