Docs / API reference

POST/v1/data/app-store/search

App Store Search

Search Apple App Store apps and return normalized listing metadata.

Execution model

Live request

Runtime depends on endpoint, target, pagination, rendering mode, and active plan limits.

Credit weight

Live catalog

Current weights are managed from the Data API Weights admin table and shown on pricing before use.

App Store Search Endpoint

Search apps, localize the storefront, and control the result set.

Getting Started

Send your API key as a bearer token. Start with the smallest request below.

Search Apps

Send term and read normalized rows from apps.

curl -X POST "https://api.datablue.dev/v1/data/app-store/search" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "term": "fitness tracker",
  "country": "us",
  "limit": 10
}'
Example response
{
  "success": true,
  "source": "app_store",
  "term": "fitness tracker",
  "country": "us",
  "total_results": 2,
  "time_taken": 0.61,
  "apps": [
    {
      "position": 1,
      "app_id": "123456789",
      "app_name": "Fitness Tracker",
      "bundle_id": "com.example.fitness",
      "developer": "Example Inc.",
      "price": 0,
      "currency": "USD",
      "rating": 4.7,
      "rating_count": 18234,
      "primary_genre": "Health & Fitness"
    }
  ]
}

Storefront and Results

Choose a Storefront

Set the two-letter country code used by the App Store.

curl -X POST "https://api.datablue.dev/v1/data/app-store/search" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "term": "fitness tracker",
  "country": "gb",
  "limit": 10
}'
Example response
{
  "success": true,
  "source": "app_store",
  "term": "fitness tracker",
  "country": "us",
  "total_results": 2,
  "time_taken": 0.61,
  "apps": [
    {
      "position": 1,
      "app_id": "123456789",
      "app_name": "Fitness Tracker",
      "bundle_id": "com.example.fitness",
      "developer": "Example Inc.",
      "price": 0,
      "currency": "USD",
      "rating": 4.7,
      "rating_count": 18234,
      "primary_genre": "Health & Fitness"
    }
  ]
}

Limit Results

Set limit from 1 to 200.

curl -X POST "https://api.datablue.dev/v1/data/app-store/search" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "term": "fitness tracker",
  "country": "us",
  "limit": 25
}'
Example response
{
  "success": true,
  "source": "app_store",
  "term": "fitness tracker",
  "country": "us",
  "total_results": 2,
  "time_taken": 0.61,
  "apps": [
    {
      "position": 1,
      "app_id": "123456789",
      "app_name": "Fitness Tracker",
      "bundle_id": "com.example.fitness",
      "developer": "Example Inc.",
      "price": 0,
      "currency": "USD",
      "rating": 4.7,
      "rating_count": 18234,
      "primary_genre": "Health & Fitness"
    }
  ]
}

Catalog Filters

Set Media and Entity

Use media and entity to target an iTunes catalog type.

curl -X POST "https://api.datablue.dev/v1/data/app-store/search" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "term": "fitness tracker",
  "country": "us",
  "media": "software",
  "entity": "software"
}'
Example response
{
  "success": true,
  "source": "app_store",
  "term": "fitness tracker",
  "country": "us",
  "total_results": 2,
  "time_taken": 0.61,
  "apps": [
    {
      "position": 1,
      "app_id": "123456789",
      "app_name": "Fitness Tracker",
      "bundle_id": "com.example.fitness",
      "developer": "Example Inc.",
      "price": 0,
      "currency": "USD",
      "rating": 4.7,
      "rating_count": 18234,
      "primary_genre": "Health & Fitness"
    }
  ]
}

Request Controls

Set Provider Timeout

Set timeout_ms from 3,000 to 60,000 milliseconds.

curl -X POST "https://api.datablue.dev/v1/data/app-store/search" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "term": "fitness tracker",
  "timeout_ms": 30000
}'
Example response
{
  "success": true,
  "source": "app_store",
  "term": "fitness tracker",
  "country": "us",
  "total_results": 2,
  "time_taken": 0.61,
  "apps": [
    {
      "position": 1,
      "app_id": "123456789",
      "app_name": "Fitness Tracker",
      "bundle_id": "com.example.fitness",
      "developer": "Example Inc.",
      "price": 0,
      "currency": "USD",
      "rating": 4.7,
      "rating_count": 18234,
      "primary_genre": "Health & Fitness"
    }
  ]
}

Response

Use total_results for the returned count and consume normalized records from apps.

Error Handling

Handle 401 for authentication, 422 for invalid input, 429 for limits, and retry only transient failures.

Parameters

NameTypeRequirementDescription
termstringRequiredApp search term.
countrystringOptionalTwo-letter App Store country code.
limitnumberOptionalMaximum apps to return (1-200).
mediastringOptionaliTunes media filter.
entitystringOptionaliTunes entity filter.
timeout_msnumberOptionalProvider timeout in milliseconds (3000-60000).

Response fields

FieldTypeDescription
successbooleanWhether the request completed successfully.
appsarrayApp rows with app_id, app_name, bundle_id, developer, description, price, rating, rating_count, genres, icon, screenshots, and app_url.
time_takennumberAPI response time in seconds.

Request and response

curl -X POST "https://api.datablue.dev/v1/data/app-store/search" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "term": "fitness tracker",
  "country": "us",
  "limit": 10
}'
Example response
{
  "success": true,
  "source": "app_store",
  "term": "fitness tracker",
  "country": "us",
  "total_results": 2,
  "time_taken": 0.61,
  "apps": [
    {
      "position": 1,
      "app_id": "123456789",
      "app_name": "Fitness Tracker",
      "bundle_id": "com.example.fitness",
      "developer": "Example Inc.",
      "price": 0,
      "currency": "USD",
      "rating": 4.7,
      "rating_count": 18234,
      "primary_genre": "Health & Fitness",
      "app_url": "https://apps.apple.com/us/app/example/id123456789"
    }
  ]
}