> ## Documentation Index
> Fetch the complete documentation index at: https://docs.modulex.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# Yelp Integration for AI Agents & Workflows

> Search for businesses, read reviews, and get business details via the Yelp Fusion API

{/* Self-hosted logo — build-time vendored from modulex.json / Iconify (see scripts/lib/logo.js). */}

<img src="https://mintcdn.com/modulexaillc/df8MOr-hXotYLTh5/logos/yelp.svg?fit=max&auto=format&n=df8MOr-hXotYLTh5&q=85&s=de8a75ae9d67dd4a11c291eceb9616fb" alt="Yelp logo" width="72" height="72" data-path="logos/yelp.svg" />

## Overview

Add **Yelp** to any ModuleX agent or workflow. Search for businesses, read reviews, and get business details via the Yelp Fusion API (`api.yelp.com/v3`).

<Info>
  **Categories**: Marketing & Advertising · Local Services · Reviews · Business Data · **Auth**: API Key · **Actions**: 4
</Info>

## Authentication

### API Key Authentication

Authenticate using your Yelp Fusion API key

<Steps>
  <Step title="Step 1">
    Go to [https://www.yelp.com/developers](https://www.yelp.com/developers) and sign in
  </Step>

  <Step title="Step 2">
    Navigate to 'Manage App' or create a new app
  </Step>

  <Step title="Step 3">
    Copy your API Key from the app settings
  </Step>

  <Step title="Step 4">
    Paste the API key below
  </Step>
</Steps>

#### Required Credentials

| Field        | Description                                       | Required | Format                                                              |
| ------------ | ------------------------------------------------- | -------- | ------------------------------------------------------------------- |
| Yelp API Key | Your Yelp Fusion API key from yelp.com/developers | Yes      | `xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx` |

## Available Actions

<AccordionGroup>
  <Accordion title="search_businesses — Search businesses matching given criteria such as location, term, categories, price, and attributes">
    ### Parameters

    <ResponseField name="location" type="string">
      Geographic area to search. Examples: 'New York City', '350 5th Ave, New York, NY 10118'. Required if latitude and longitude are not provided.
    </ResponseField>

    <ResponseField name="latitude" type="string">
      Latitude of the location to search from. Required if location is not provided.
    </ResponseField>

    <ResponseField name="longitude" type="string">
      Longitude of the location to search from. Required if location is not provided.
    </ResponseField>

    <ResponseField name="term" type="string">
      Search term, e.g. 'food' or 'restaurants'. May also be a business name like 'Starbucks'.
    </ResponseField>

    <ResponseField name="max_results" type="integer">
      Maximum number of businesses to return. Yelp enforces a limit of 1000. (Default: `200`)
    </ResponseField>

    <ResponseField name="categories" type="string">
      Comma-separated category aliases to filter results (e.g. 'discgolf,restaurants'). See Yelp docs for supported categories.
    </ResponseField>

    <ResponseField name="price" type="string">
      Comma-separated pricing levels: 1 (\$), 2 (\$\$), 3 (\$\$\$), 4 (\$\$\$\$). Example: '1,2'.
    </ResponseField>

    <ResponseField name="attributes" type="string">
      Comma-separated additional filters: hot\_and\_new, request\_a\_quote, reservation, waitlist\_reservation, deals, gender\_neutral\_restrooms, open\_to\_all, wheelchair\_accessible.
    </ResponseField>

    ### Response

    ```json theme={null}
    {
      "$defs": {
        "BusinessSummary": {
          "additionalProperties": false,
          "description": "A business object returned by Yelp search endpoints.",
          "properties": {
            "id": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Id"
            },
            "alias": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Alias"
            },
            "name": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Name"
            },
            "image_url": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Image Url"
            },
            "url": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Url"
            },
            "review_count": {
              "anyOf": [
                {
                  "type": "integer"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Review Count"
            },
            "categories": {
              "items": {
                "additionalProperties": true,
                "type": "object"
              },
              "title": "Categories",
              "type": "array"
            },
            "rating": {
              "anyOf": [
                {
                  "type": "number"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Rating"
            },
            "coordinates": {
              "anyOf": [
                {
                  "additionalProperties": true,
                  "type": "object"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Coordinates"
            },
            "location": {
              "anyOf": [
                {
                  "additionalProperties": true,
                  "type": "object"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Location"
            },
            "phone": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Phone"
            },
            "display_phone": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Display Phone"
            },
            "distance": {
              "anyOf": [
                {
                  "type": "number"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Distance"
            }
          },
          "title": "BusinessSummary",
          "type": "object"
        }
      },
      "additionalProperties": false,
      "properties": {
        "success": {
          "title": "Success",
          "type": "boolean"
        },
        "error": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Error"
        },
        "businesses": {
          "items": {
            "$ref": "#/$defs/BusinessSummary"
          },
          "title": "Businesses",
          "type": "array"
        },
        "total": {
          "default": 0,
          "title": "Total",
          "type": "integer"
        }
      },
      "required": [
        "success"
      ],
      "title": "SearchBusinessesOutput",
      "type": "object"
    }
    ```
  </Accordion>

  <Accordion title="get_business_details — Get detailed information about a specific business by its Yelp ID or alias">
    ### Parameters

    <ResponseField name="business_id_or_alias" type="string" required>
      A unique identifier for a Yelp Business. Can be a 22-character Yelp Business ID or a Yelp Business Alias.
    </ResponseField>

    <ResponseField name="device_platform" type="string">
      Determines the platform for mobile\_link. Allowed values: android, ios, mobile-generic.
    </ResponseField>

    <ResponseField name="locale" type="string">
      Locale code in the format \{language}\_\{country} (e.g. en\_US).
    </ResponseField>

    ### Response

    ```json theme={null}
    {
      "additionalProperties": false,
      "properties": {
        "success": {
          "title": "Success",
          "type": "boolean"
        },
        "error": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Error"
        },
        "business": {
          "anyOf": [
            {
              "additionalProperties": true,
              "type": "object"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Business"
        }
      },
      "required": [
        "success"
      ],
      "title": "GetBusinessDetailsOutput",
      "type": "object"
    }
    ```
  </Accordion>

  <Accordion title="list_business_reviews — List the reviews for a specific business">
    ### Parameters

    <ResponseField name="business_id_or_alias" type="string" required>
      A unique identifier for a Yelp Business. Can be a 22-character Yelp Business ID or a Yelp Business Alias.
    </ResponseField>

    <ResponseField name="locale" type="string">
      Locale code in the format \{language}\_\{country} (e.g. en\_US).
    </ResponseField>

    <ResponseField name="sort_by" type="string">
      Sort order for reviews. Allowed values: yelp\_sort, newest.
    </ResponseField>

    ### Response

    ```json theme={null}
    {
      "$defs": {
        "ReviewSummary": {
          "additionalProperties": false,
          "description": "A review object returned by the reviews endpoint.",
          "properties": {
            "id": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Id"
            },
            "url": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Url"
            },
            "text": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Text"
            },
            "rating": {
              "anyOf": [
                {
                  "type": "integer"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Rating"
            },
            "time_created": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Time Created"
            },
            "user": {
              "anyOf": [
                {
                  "additionalProperties": true,
                  "type": "object"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "User"
            }
          },
          "title": "ReviewSummary",
          "type": "object"
        }
      },
      "additionalProperties": false,
      "properties": {
        "success": {
          "title": "Success",
          "type": "boolean"
        },
        "error": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Error"
        },
        "reviews": {
          "items": {
            "$ref": "#/$defs/ReviewSummary"
          },
          "title": "Reviews",
          "type": "array"
        },
        "total": {
          "default": 0,
          "title": "Total",
          "type": "integer"
        },
        "possible_languages": {
          "items": {
            "type": "string"
          },
          "title": "Possible Languages",
          "type": "array"
        }
      },
      "required": [
        "success"
      ],
      "title": "ListBusinessReviewsOutput",
      "type": "object"
    }
    ```
  </Accordion>

  <Accordion title="search_businesses_by_phone_number — Search for businesses by phone number">
    ### Parameters

    <ResponseField name="phone" type="string" required>
      Phone number to search for. Must start with + and include the country code, e.g. +14159083801.
    </ResponseField>

    <ResponseField name="locale" type="string">
      Locale code in the format \{language}\_\{country} (e.g. en\_US).
    </ResponseField>

    ### Response

    ```json theme={null}
    {
      "$defs": {
        "BusinessSummary": {
          "additionalProperties": false,
          "description": "A business object returned by Yelp search endpoints.",
          "properties": {
            "id": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Id"
            },
            "alias": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Alias"
            },
            "name": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Name"
            },
            "image_url": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Image Url"
            },
            "url": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Url"
            },
            "review_count": {
              "anyOf": [
                {
                  "type": "integer"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Review Count"
            },
            "categories": {
              "items": {
                "additionalProperties": true,
                "type": "object"
              },
              "title": "Categories",
              "type": "array"
            },
            "rating": {
              "anyOf": [
                {
                  "type": "number"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Rating"
            },
            "coordinates": {
              "anyOf": [
                {
                  "additionalProperties": true,
                  "type": "object"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Coordinates"
            },
            "location": {
              "anyOf": [
                {
                  "additionalProperties": true,
                  "type": "object"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Location"
            },
            "phone": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Phone"
            },
            "display_phone": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Display Phone"
            },
            "distance": {
              "anyOf": [
                {
                  "type": "number"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Distance"
            }
          },
          "title": "BusinessSummary",
          "type": "object"
        }
      },
      "additionalProperties": false,
      "properties": {
        "success": {
          "title": "Success",
          "type": "boolean"
        },
        "error": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Error"
        },
        "businesses": {
          "items": {
            "$ref": "#/$defs/BusinessSummary"
          },
          "title": "Businesses",
          "type": "array"
        }
      },
      "required": [
        "success"
      ],
      "title": "SearchBusinessesByPhoneNumberOutput",
      "type": "object"
    }
    ```
  </Accordion>
</AccordionGroup>

## Limits & Quotas

* **Rate limit**: 5,000 API calls per day (per Yelp Fusion free tier).
* **Search pagination**: Maximum offset of 1,000 results; each page returns up to 50 businesses.
* **Reviews**: Returns up to 3 reviews per business (Yelp API limitation).
* **Error model**: Non-2xx responses and timeouts are caught and returned as `success=False` + `error` rather than raising.

## Related integrations

<CardGroup cols={3}>
  <Card title="Google My Business" href="/integrations/tools/google-my-business" />

  <Card title="Ahrefs" href="/integrations/tools/ahrefs" />

  <Card title="Customer.io" href="/integrations/tools/customerio" />
</CardGroup>

## Links

* [Yelp](https://www.yelp.com)
