The Ajax API provides a suite of lightweight REST API endpoints for development of [Shopify themes](/docs/storefronts/themes). The Ajax API can only be used by themes that are hosted by Shopify. You can't use the Ajax API on a Shopify custom storefront.

> Tip:
> To request the HTML markup for theme sections using an AJAX request, use the [Section Rendering API](/docs/api/ajax/section-rendering).

## Use cases

Possible uses of the Ajax API include:

- Add products to the cart and update the cart item counter.
- Display related product recommendations.
- Suggest products and collections to visitors as they type in a search field.

Refer to the [Ajax API reference](/docs/api/ajax/reference/) for a full list of available API endpoints.

## Making requests to the API

The Ajax API accepts two types of HTTP requests:

- `GET` requests to read cart and some product data
- `POST` requests to update the cart for the current session

For instance, to fetch the current contents of the cart, send a client-side request to the store’s `/cart.js` endpoint.

```javascript
var cartContents = fetch(window.Shopify.routes.root + 'cart.js')
  .then(response => response.json())
  .then(data => { return data });
```

## Locale-aware URLs

Stores can have [dynamic URLs](/docs/storefronts/themes/markets/multiple-currencies-languages#locale-aware-urls) generated for them when they sell internationally or in multiple languages. When using the Ajax API, it’s important to use dynamic, locale-aware URLs so that you can give visitors a consistent experience for the language and country that they’ve chosen.

The global value `window.Shopify.routes.root` is available to use as a base when building locale-aware URLs in JavaScript. The global value will always end in a `/` character, so you can safely use simple string concatenation to build the full URLs.

## Requirements and limitations

- This is an [unauthenticated](/docs/apps/build/authentication-authorization) API. It doesn’t require access tokens or a client ID to access.
- There are no hard [rate limits](/docs/api/usage/rate-limits) on the Ajax API. It’s still subject to Shopify’s standard API abuse-prevention measures.
- All API responses return JSON-formatted data.
- Product JSON responses are limited to a maximum of 250 variants.
- The Ajax API can’t be used to read any customer or order data, or update any store data. If you need more extensive access, check the [GraphQL Admin API](/docs/api/admin-graphql).

## Tutorials

- [Show product recommendations on product pages using the Ajax API](/docs/storefronts/themes/product-merchandising/recommendations)