# App Store Search API (app_store.search)

- Canonical page: https://everyinfra.com/en/app-store-api/search
- Endpoint: POST https://api.everyinfra.com/api/v1/social with {"platform": "app_store", "action": "search", "params": {...}}
- Price: $0.001389 per call ($1.39 per 1,000 requests); failed calls and empty results are not charged
- Returns: list, default 20, max 200 per call
- Mode: sync; add "mode": "async" for slow tasks

## Health

- Live health (24h percent, hourly and daily trends): https://api.everyinfra.com/api/v1/social/availability?platform=app_store&action=search

## Parameters

| name | type | required | default | description |
|---|---|---|---|---|
| keyword | not declared | yes | not declared | Specifies App Store search terms, such as habit tracker or an application title, rather than a Bundle ID. Use the numeric app_id returned in the search results for subsequent app detail and review requests. |
| country | not declared | no | not declared | Selects the App Store storefront for search, profile, and reviews using a lowercase two-letter country code such as us, cn, or jp. The default is us. It changes the storefront being queried, not the account region or EveryInfra billing. |
| limit | integer (1–200) | no | 20 | The most rows to return in this call, an integer from 1 to 200. The default applies when you leave it out, and a call can return fewer rows. Larger values return 422 before any charge. |

## Response fields (items in `results`)

| field | meaning |
|---|---|
| app_id | platform-native meaning |
| name | Name of the object itself, for account, product and business capabilities. |
| url | Link to the record on the platform. |
| bundle_id | platform-native meaning |
| developer | platform-native meaning |
| developer_id | platform-native meaning |
| developer_url | platform-native meaning |
| description | Summary or description, usually shorter than text. |
| release_notes | platform-native meaning |
| version | platform-native meaning |
| price | Price as a number without a currency symbol; see currency. |
| currency | Currency code of the price (for example CNY, USD). If price is present but currency is null, do not assume a currency. |
| formatted_price | platform-native meaning |
| rating | Rating. **The scale varies by platform**: rating_scale on the same row gives the maximum (usually 5; Booking, Douban, iQIYI and NAVER use 10). Convert with rating_scale before comparing across platforms, or the comparison can come out backwards. |
| rating_scale | Maximum of rating in the same row: 5 for five-star scales, 10 for ten-point scales. Present only when the row has a rating. |
| rating_count | Number of people who rated. null means not disclosed, not 0. |
| current_version_rating | platform-native meaning |
| current_version_rating_count | platform-native meaning |
| content_rating | platform-native meaning |
| category | Category name in the platform's own taxonomy, not normalized across platforms. |
| icon_url | platform-native meaning |
| min_os | platform-native meaning |
| file_size_bytes | platform-native meaning |
| released_at | platform-native meaning |
| updated_at | platform-native meaning |
| platform | Source platform identifier, the same as platform in the request (for example xiaohongshu, tiktok). |
| genres | platform-native meaning |
| languages | platform-native meaning |
| screenshot_urls | platform-native meaning |

## Example

```bash
curl -X POST 'https://api.everyinfra.com/api/v1/social' \
  -H "Authorization: Bearer $EVERYINFRA_API_KEY" \
  -H 'Content-Type: application/json' \
  --data-raw '{
  "platform": "app_store",
  "action": "search",
  "params": {
    "keyword": "habit tracker"
  }
}'
```

```python
import os
import requests

response = requests.post(
    "https://api.everyinfra.com/api/v1/social",
    headers={"Authorization": f"Bearer {os.environ['EVERYINFRA_API_KEY']}"},
    json={
        "platform": "app_store",
        "action": "search",
        "params": {
            "keyword": "habit tracker",
        },
    },
    timeout=120,
)
print(response.status_code)
print(response.json())
```

## Response example

Real response to the example request above, captured 2026-09-26T08:56:04Z. `results` and `count` are real with personal information (names, handles, avatars, profile links, contact details) removed; the list keeps the first 2 of 18. `id`, `billing` and `quota` differ on every call, so only their shape is shown.

```text
{
  "id": "req_…",
  "platform": "app_store",
  "action": "search",
  "results": [
    {
      "app_id": 1438388363,
      "name": "Habit Tracker",
      "url": "https://apps.apple.com/us/app/habit-tracker/id1438388363?uo=4",
      "bundle_id": "com.davetech.habit",
      "developer": "InnerGrow",
      "developer_url": "https://apps.apple.com/us/developer/innergrow/id1828382777?uo=4",
      "description": "Habit Tracker: A simple daily planner to schedule and track your routine, making it easy to build lasting habits. \nJoin 15M+ happy users, achieve your goals, and make every day count!\nMore than a self-care companion, it lets you share with others to grow and improve together. \n\n-…",
      "release_notes": "- add shortcut supports \n- add custom repeat interval \n- fix bugs\n----- Beta Tester needed -----\nIf you want to help us to test new version, contact us: •••\nIf your widget is not working, restart your iPhone.\nOur IG: Tiny Useful Apps",
      "version": "2.14.23",
      "price": 0,
      "currency": "USD",
      "formatted_price": "Free",
      "rating": 4.79,
      "rating_count": 147260,
      "current_version_rating_count": 147260,
      "content_rating": "4+",
      "category": "Productivity",
      "icon_url": "https://is1-ssl.mzstatic.com/image/thumb/Purple221/v4/d3/ef/00/d3ef00c2-9b1c-b5ef-0464-2e08231b80de/AppIcon-pink-gr-0-0-1x_U007epad-0-1-0-sRGB-85-220.png/512x512bb.jpg",
      "min_os": "15.0",
      "file_size_bytes": 339836928,
      "released_at": "2019-01-31T09:10:14+00:00",
      "updated_at": "2026-08-15T15:18:18+00:00",
      "platform": "app_store",
      "genres": [
        "Productivity",
        "Health & Fitness"
      ],
      "languages": [
        "EN",
        "FR",
        "DE"
      ],
      "screenshot_urls": [
        "https://is1-ssl.mzstatic.com/image/thumb/PurpleSource221/v4/5c/b8/05/5cb8051e-e125-e84e-f0b5-2551b6e9d69d/_U767d1.jpg/320x480bb.jpg",
        "https://is1-ssl.mzstatic.com/image/thumb/PurpleSource211/v4/13/5d/32/135d32df-678d-5c7e-d940-4f16d5c4e396/_U767d2.jpg/320x480bb.jpg",
        "https://is1-ssl.mzstatic.com/image/thumb/PurpleSource211/v4/2e/a8/66/2ea866a0-2271-4d8a-e380-8386b935283f/_U767d3.jpg/320x480bb.jpg"
      ],
      "rating_scale": 5
    },
    {
      "app_id": 6443918070,
      "name": "Habit Tracker - HabitKit",
      "url": "https://apps.apple.com/us/app/habit-tracker-habitkit/id6443918070?uo=4",
      "bundle_id": "com.roehl.habitkit",
      "developer": "Sebastian Roehl",
      "developer_url": "https://apps.apple.com/us/developer/sebastian-roehl/id1602956482?uo=4",
      "description": "Big life changes do not start big. They start with one small habit, done today, done again tomorrow. HabitKit turns those daily wins into a colorful grid of tiles, one square for every day you show up, so you can finally see yourself becoming the person you want to be.\n\nThat visi…",
      "release_notes": "- Choose Yes/No, Count or Measure with decimals and custom units\n- Change habit types without losing history or streaks\n- At a Count goal above 1, tap to edit instead of clearing\n- New iOS Shortcuts to log amounts and notes, get progress and open habits; translated labels and cle…",
      "version": "1.18.0",
      "price": 0,
      "currency": "USD",
      "formatted_price": "Free",
      "rating": 4.85,
      "rating_count": 2430,
      "current_version_rating_count": 2430,
      "content_rating": "4+",
      "category": "Productivity",
      "icon_url": "https://is1-ssl.mzstatic.com/image/thumb/Purple221/v4/79/91/fe/7991fe78-b459-1397-205f-54525a639bde/NewAppIcon-0-0-1x_U007ephone-0-1-sRGB-85-220.png/512x512bb.jpg",
      "min_os": "15.0",
      "file_size_bytes": 230910976,
      "released_at": "2022-11-26T08:00:00+00:00",
      "updated_at": "2026-09-21T08:40:41+00:00",
      "platform": "app_store",
      "genres": [
        "Productivity"
      ],
      "languages": [
        "AR",
        "BE",
        "CA"
      ],
      "screenshot_urls": [
        "https://is1-ssl.mzstatic.com/image/thumb/PurpleSource221/v4/cb/27/c1/cb27c143-49f7-12ba-a1f1-68fd4caf0634/Apple_iPhone_11_Pro_Max_Screenshot_0.png/320x480bb.jpg",
        "https://is1-ssl.mzstatic.com/image/thumb/PurpleSource221/v4/18/ba/4e/18ba4eac-d29a-94ae-88a5-92204e14eb24/Apple_iPhone_11_Pro_Max_Screenshot_1.png/320x480bb.jpg",
        "https://is1-ssl.mzstatic.com/image/thumb/PurpleSource221/v4/23/59/4e/23594e53-c451-7772-0dbb-7cd58b8470bb/Apple_iPhone_11_Pro_Max_Screenshot_2.png/320x480bb.jpg"
      ],
      "rating_scale": 5
    }
  ],
  "count": 18,
  "billing": {
    "charged": …,
    "charged_usd": …,
    "balance_after_usd": …,
    …
  },
  "quota": { … }
}
```

## Also

- Capability catalog (no key): https://api.everyinfra.com/api/v1/social/catalog?platform=app_store
- OpenAPI: https://everyinfra.com/openapi.json · Agents guide: https://everyinfra.com/agents.md
