# App Store App Listings Search API (https://www.socialcrawl.dev/platforms/app_store/app-listings-search) > Searches a real-time, filterable Apple App Store listings database by app title (and/or description) and returns a unified AppList. Unlike the store-chart endpoints this one is the ONE true paginator: page by passing `pagination.next_cursor` back as `cursor` until `pagination.has_more` is false, size the page with `limit` (≤50), and read the platform-wide match count at `data.total` (14,686 for the query 'photo editor' on 06/09/2026). Each row also carries `app.ext.appdata.time_update`, the freshness stamp for that listing in the database. Premium-tier because this surface is billed per returned item. TL;DR: `GET /v1/app_store/app-listings-search` costs 10 credits per call and returns SocialCrawl's unified JSON schema. Single x-api-key auth, 100 free credits on signup. ## Parameters | Parameter | Required | Description | | --- | --- | --- | | `title` | yes | App title to search for (e.g. 'photo editor'). | | `description` | no | Optional app-description text to match. | | `limit` | no | Apps per page (1-50, default 20). | | `offset` | no | Pagination offset (up to 10,000). Prefer `cursor`: pass `pagination.next_cursor` straight back and the offset is handled for you. | | `offset_token` | no | Legacy deep-pagination token. Prefer `cursor`, which accepts `pagination.next_cursor` verbatim and works on every paginatable endpoint. | | `filters` | no | Advanced filter expression as a JSON array of clauses, e.g. [["item.rating.value",">",4]]. Must be valid JSON and must be an array: anything else is rejected with a free 400 rather than silently returning an unfiltered page. | | `country` | no | Storefront country as an ISO code ('US'), a full name, or a numeric code. Defaults to the US. | | `language` | no | Language code (e.g. 'en'). Defaults to 'en'. | | `max_pages` | no | 1 to 50 (default 1, or 50 when `max_items` or `max_credits` is sent). Walk up to this many pages in one call and return the rows from all of them. Each page walked is billed exactly as one call to this endpoint (a cached page is free) and counts against your rate limit; its charge and any refund are recorded under the page's own request id, listed in `data.walk.request_ids`. The walk stops early at the last page, or when the request's time budget runs low; `data.walk.stopped` says why (`end`, `max_pages`, `max_items`, `max_credits`, `time_budget`, `page_error`) and `pagination.next_cursor` continues from where it stopped. | | `max_items` | no | 1 to 5000. Get more in one call: keep walking pages until the response holds at least this many rows, then stop with `data.walk.stopped: "max_items"`. The last page is returned whole (it was billed), so `data.items` can hold up to one page more than this, and `pagination.next_cursor` resumes right after it without skipping a row. Walks up to 50 pages unless `max_pages` says fewer; each page is billed as one call (a cached page is free). Add `max_credits` to cap the spend. A long walk can stop on the time budget first (`"time_budget"`): send the returned cursor with the same params to continue. | | `max_credits` | no | 1 to 100000. The most this call may spend, across every page it walks. A page starts only while the credits already spent plus that page's price (or, when higher, the most any page of this walk has cost) still fit, so the call never goes past it; the walk then stops with `data.walk.stopped: "max_credits"` and the cursor to resume. Sent alone, it walks as far as the budget goes (up to 50 pages). A value below the price of one page is a free 400 whose `error.details.page_credits` names that price. Credits a row join (`include=`) adds are known only once a page has run, so page 1 is checked against its own price. | ## Code example ```bash curl -G "https://www.socialcrawl.dev/v1/app_store/app-listings-search" \ --data-urlencode "title=photo editor" \ -H "x-api-key: sc_YOUR_API_KEY" ``` ## FAQ ### How do I query the App Store listings database via API? Send a GET request to /v1/app_store/app-listings-search with a title plus optional filters. It queries a paginated listings database rather than the store-ranked app-search surface. Both endpoints use the 2-minute search cache; exact cache hits cost 0 credits, and Cache-Control: no-cache requests a billed refresh. ### What makes app-listings-search different from app search? App search returns current ranked store results. Exact repeat searches may use the 2-minute public cache; cache hits cost 0 credits, and Cache-Control: no-cache requests a billed refresh. App-listings-search searches a database by title with limit and offset pagination, filters, and a total match count, built for bulk analysis and dataset building rather than store-style lookup. ### What does the platform-wide total give me? Each response includes the total number of matching listings across the database, not just the current page. That total lets you size a result set, paginate confidently, and report how many iOS apps match a filter, unusual for a developer API. ### How much does the App Store listings endpoint cost? App-listings-search runs on the premium tier at 10 credits per call, reflecting the per-item paginated database query behind it. New accounts get 100 free credits with no card, and an empty result is refunded automatically. ### Can I paginate and filter the listings? Yes. Use limit (up to 50) and offset to page through the result set, then offset_token for deeper pages, and filters to narrow listings first. Each listing carries its numeric app id, so you can hand results straight to app-info or app-reviews. See the full App Store API: https://www.socialcrawl.dev/platforms/app_store ## Pricing - Standard endpoints: 1 credit per call - Advanced endpoints: 5 credits per call - Premium endpoints: 10 credits per call - 100 free credits on signup, no credit card required. Cached responses cost 0 credits. Credit packs never expire. - Full pricing: https://www.socialcrawl.dev/pricing ## Explore with AI Questions this API answers, phrased for an AI assistant: - How to query a paginated Apple App Store listings database via API - How does the SocialCrawl App Store listings API return a platform-wide total?