Sensor42 Sensor42

Public API Reference

Sensor42 exposes authenticated v7 endpoints for app info, keywords, markets, metadata, and app search. This page documents the public, customer-facing endpoints only. Every field, filter, and option below is generated from a single source file so the published page and the raw text inventory stay aligned.

Base URL: https://api.sensor42.com Auth: X-API-Key Credits: 5 per request Rate limit: 60 requests/minute

Authentication

  • X-API-Key: YOUR_API_KEY is the primary authentication header.
  • Authorization: Bearer YOUR_API_KEY is also accepted.
  • api_key=YOUR_API_KEY in the query string is accepted for server-to-server convenience, but headers are preferred.

Billing and rate limits

  • Every documented v7 endpoint currently charges 5 credits per request.
  • Each response includes X-Credits-Charged and X-Credits-Balance headers.
  • Rate limit is 60 requests per minute per API key.
  • Rate limit headers are always returned: X-RateLimit-Limit, X-RateLimit-Remaining, and X-RateLimit-Reset.
  • If the minute bucket is exhausted, the API returns HTTP 429 with a Retry-After header.

Formats and conventions

  • JSON is the default response format.
  • Endpoints that support CSV accept format=csv or Accept: text/csv.
  • Dates and timestamps are returned as stored ISO/RFC3339-like strings when available.
  • Nullable fields can be null or empty collections depending on the endpoint.
  • IDs are numeric App Store or internal Sensor42 identifiers represented as integers.

Common HTTP statuses

  • 200 OK for successful requests.
  • 400 Bad Request for invalid path, filter, sort, limit, offset, or format values.
  • 401 Unauthorized when the API key is missing or invalid.
  • 402 Payment Required when the account does not have enough credits.
  • 404 Not Found when the requested app, topic, or term does not exist.
  • 429 Too Many Requests when the per-minute key limit is exceeded.
  • 500 Internal Server Error for unexpected backend failures.
  • 503 Service Unavailable when a required analytics backend such as ClickHouse is not available.
GET /api/v7/apps/{app_id}/info

App Info

Return the main app profile and the derived commercial metrics used across Sensor42: identity, category, ratings, release dates, speed/day, estimated downloads, estimated revenue ranges, and the latest all-markets reviews total.

Notes

  • speed_per_day, downloads_estimate, and the revenue range fields are computed estimates derived from the current review/rating footprint and release date, not official App Store sales numbers.
  • all_markets_reviews comes from the latest available markets snapshot.
  • This endpoint returns JSON only.

Parameters

NameLocationTypeRequiredDescription
app_idpathuint64YesNumeric App Store app identifier.

Response fields

FieldTypeDescription
app_iduint64Requested App Store app identifier.
titlestring|nullCurrent app title.
subtitlestring|nullCurrent app subtitle when available.
bundle_idstring|nullBundle identifier, for example com.example.app.
developer_namestring|nullVisible developer or publisher name.
category_iduint64|nullApple category identifier.
category_namestring|nullResolved Apple category label.
ratingfloat|nullCurrent average star rating.
rating_countint64|nullCurrent ratings/reviews count stored on the main app row.
statusstringCurrent app collection status in Sensor42, for example visited.
last_seendatetime|nullLatest time this app row was seen in the crawler dataset.
first_release_datedatetime|nullEarliest known release date.
last_release_datedatetime|nullMost recent known release/update date.
speed_per_dayfloat|nullAverage reviews per day based on rating_count and first_release_date.
downloads_estimatefloat|nullEstimated downloads calculated from ratings signals.
revenue_month_minfloat|nullEstimated lower monthly revenue bound.
revenue_month_maxfloat|nullEstimated upper monthly revenue bound.
revenue_lifetime_minfloat|nullEstimated lower lifetime revenue bound.
revenue_lifetime_maxfloat|nullEstimated upper lifetime revenue bound.
all_markets_reviewsuint64Latest aggregated review count across all markets.
developer_taglinestring|nullDeveloper marketing line extracted from stored app metadata when available.

Examples

cURL
curl "https://api.sensor42.com/api/v7/apps/1545593132/info" \
  -H "X-API-Key: YOUR_API_KEY" \
  -H "Accept: application/json"
GET /api/v7/apps/{app_id}/keywords

App Keywords

Return the parsed ASO keyword list extracted from the stored app metadata, enriched with global keyword frequency counts from Sensor42.

Notes

  • Items are sorted by frequency descending and then by keyword ascending.
  • frequency is based on the Sensor42 keyword table times_seen value for each parsed ASO keyword.
  • This endpoint returns JSON only.

Parameters

NameLocationTypeRequiredDescription
app_idpathuint64YesNumeric App Store app identifier.

Response fields

FieldTypeDescription
app_iduint64Requested App Store app identifier.
totalintTotal number of parsed keyword rows returned.
items[].keywordstringKeyword text parsed from the app ASO metadata blob.
items[].frequencyint64Global frequency score from the Sensor42 keyword corpus.

Examples

cURL
curl "https://api.sensor42.com/api/v7/apps/1545593132/keywords" \
  -H "X-API-Key: YOUR_API_KEY" \
  -H "Accept: application/json"
GET /api/v7/apps/{app_id}/markets

App Markets

Return the latest market-level review/rating footprint for an app, including share percentage and the available recent and average speed/day values per market.

Notes

  • This endpoint currently returns the full latest markets snapshot in one response. The pagination-style fields are present for consistency with the rest of the API, but the response is effectively a single page.
  • speed is an alias for speed_recent in the sort_by parameter.
  • This endpoint returns JSON only.

Parameters

NameLocationTypeRequiredDescription
app_idpathuint64YesNumeric App Store app identifier.
sort_byqueryenumNoSort field. Allowed values: ratings (default), store, speed, speed_recent, speed_avg, rating, share, updated.
sort_dirqueryenumNoSort direction. Allowed values: asc, desc. Default is asc for store, otherwise desc.

Response fields

FieldTypeDescription
app_iduint64Requested App Store app identifier.
run_idstringReserved field for the originating run identifier. Currently empty.
run_created_atstringLatest markets snapshot timestamp.
pageintCurrent page number. Currently always 1 when data exists.
page_sizeintNumber of market rows returned.
totalint64Total number of market rows in the latest snapshot.
total_pagesintTotal pages. Currently 1 when data exists.
total_volumeuint64Sum of market review counts across the snapshot.
items[].storestringUppercase 2-letter App Store market code.
items[].volumeuint64Review count for that market.
items[].ratingfloatAverage rating for that market row.
items[].updated_atstringSnapshot timestamp for that market row.
items[].share_percentfloat|nullPercent share of total_volume represented by the market row.
items[].speed_per_day_recentfloat|nullRecent speed/day for the market when the speed source exists.
items[].speed_per_day_avgfloat|nullAverage speed/day for the market when the speed source exists.

Examples

cURL
curl "https://api.sensor42.com/api/v7/apps/1545593132/markets?sort_by=share&sort_dir=desc" \
  -H "X-API-Key: YOUR_API_KEY" \
  -H "Accept: application/json"
GET /api/v7/apps/{app_id}/meta

App Meta

Return the stored rich metadata block for an app: text metadata, ASO keyword array, version block, age rating, language string, in-app purchases, compatibility map, canonical SEO values, and review snippets.

Notes

  • aso_keywords is parsed from the stored keywords_aso_json blob and normalized into a flat unique array.
  • compatibility is returned as a free-form object because the source data uses key-value pairs that can vary by app.
  • This endpoint returns JSON only.

Parameters

NameLocationTypeRequiredDescription
app_idpathuint64YesNumeric App Store app identifier.

Response fields

FieldTypeDescription
app_iduint64Requested App Store app identifier.
titlestring|nullCurrent app title.
subtitlestring|nullCurrent app subtitle when available.
descriptionstring|nullLong-form app description.
developer_taglinestring|nullDeveloper marketing line extracted from stored metadata.
aso_keywords[]stringNormalized ASO keyword list.
version.versionstring|nullVersion label from the stored metadata block.
version.updated_atstring|nullVersion update date text from the stored metadata block.
version.release_notesstring|nullRelease notes for the current version.
age_rating.ratingstring|nullTop-level age rating label.
age_rating.details[]stringAdditional age rating descriptors.
languages_rawstring|nullRaw languages string as stored in the scraped metadata.
in_app_purchases[].namestringIn-app purchase display name.
in_app_purchases[].pricestringIn-app purchase price text.
compatibilityobject<string,string>Compatibility key-value map as stored by the scraper.
canonical_urlstring|nullCanonical App Store or landing URL when present.
seo_page_titlestring|nullStored SEO page title when available.
reviews[].titlestringReview title snippet.
reviews[].bodystringReview body snippet.
reviews[].ratingfloat|nullReview star rating.
reviews[].date_textstringOriginal review date text.
reviews[].reviewer_namestringDisplayed reviewer name.

Examples

cURL
curl "https://api.sensor42.com/api/v7/apps/1545593132/meta" \
  -H "X-API-Key: YOUR_API_KEY" \
  -H "Accept: application/json"

Operational note