Microsoft Store API endpoint
Returns a page of Microsoft Store search results (apps, games, devices, and other listings) for a keyword, with cursor-based pagination and per-item publisher, rating, price, and media. media_type selects the department (apps, games, devices, passes, fonts, themes, tencent-android, tencent-mini, or all); category further filters within that department (the accepted set depends on media_type -- see the markdown doc for the full per-department lists). Pass the previous response's next_cursor to fetch the next page.
/microsoftstore/searchQuery parameters:
query (required) — search keyword (e.g. spotify).media_type (optional, default all) — department to search. One of all, apps, games, devices, passes, fonts, themes, tencent-android, tencent-mini.category (optional, default all) — category to filter by within the selected department. Ignored (upstream does not offer a category filter) when media_type is all. The accepted set depends on media_type (also available live from /microsoftstore/categories, which additionally lists each apps category's own subcategories — not usable here, but usable as a subcategory filter on /microsoftstore/charts):
apps, fonts, themes: Books & reference, Business, Developer tools, Education, Entertainment, Food & dining, Government & politics, Health & fitness, Kids & family, Lifestyle, Medical, Multimedia design, Music, Navigation & maps, News & weather, Personal Finance, Personalization, Photo & video, Productivity, Security, Shopping, Social, Sports, Travel, Utilities & toolsgames: Action & adventure, Card & board, Casino, Classics, Companion, Educational, Family & kids, Fighting, Multi-player Online Battle Arena, Music, Other, Platformer, Puzzle & trivia, Racing & flying, Role playing, Shooter, Simulation, Social, Sports, Strategy, Tools, Video, Worddevices: Accessories, Microsoft Surface, PCs & tablets, Virtual Reality, Windows Phone, Xboxpasses: HomeStudents, Mac, SmallBusiness, Office365, Office365Renewal, OfficeApps, XboxLivetencent-android, tencent-mini: the union of the apps list plus Action & adventure, Card & board, Casino, Educational, Family & kids, Fighting, Platformer, Puzzle & trivia, Racing & flying, Role playing, Shooter, Simulation, Strategy, Wordprice (optional, default all) — one of all, Free, Paid, Sale.age (optional, default all) — maximum-age filter. One of all, TO3, TO4, TO5, TO6, TO7, TO8, TO9, TO10, TO11, TO12, TO13, TO14, TO15, TO16, TO17.cursor (optional) — opaque pagination cursor from a previous response's next_cursor. Omit for the first page.country (optional, default US) — store country/region code (ISO-2); selects the store region and price currency.locale (optional, default en-US) — display locale (BCP-47).An invalid media_type, price, or age value is rejected with 400. An invalid category for the selected media_type is also rejected with 400 (validated client-side against the exact per-department sets above, live-verified 2026-09-23 directly from the search endpoint's own filterOptions.Category response field).
Returns query, media_type, category, price, age, count, items[] (each: product_id, title, description, publisher, categories[], media_type, kind — app/game/subscription/theme, average_rating, rating_count (formatted string, e.g. 34K), price, display_price, free, icon_url, poster_art_url, release_date_utc, url, award (present only for a Microsoft Store Awards winner: title, description, year, category, editorial_id — pass editorial_id to /microsoftstore/editorial for the full writeup), plus is_application/is_game/is_subscription/is_theme/is_pwa booleans), next_cursor (present when more results exist), has_more, and source_url.
| Field | Filled in, of 20 checked | Values in the sample |
|---|---|---|
| product_id | 20 | |
| title | 20 | “Spotify - Music and Podcasts” and 19 other values |
| description | 20 | median 1,209 characters |
| publisher | 20 | “Spotify AB” and 18 other values |
| categories | 20 | median 1 entry |
| media_type | 20 | Apps in all 20 |
| kind | 20 | app in all 20 |
| average_rating | 20 | 3.1 to 4.7, median 4.4 |
| rating_count | 20 | “34K” and 15 other values |
| price | 20 | 0 |
| display_price | 20 | Free in all 20 |
| free | 20 | true in 20 of 20 |
| icon_url | 20 | store-images.s-microsoft.com and 1 other host |
| poster_art_url | 20 | store-images.s-microsoft.com and 1 other host |
| release_date_utc | 19 | 2011-02-23 to 2026-03-27 |
| url | 20 | apps.microsoft.com |
| is_application | 20 | true in 20 of 20 |
| Parameter | Type | Required | Default | Description | Example |
|---|---|---|---|---|---|
| query | string | Yes | Search keyword | spotify | |
| media_type | string | No | Department to search Allowed values: all, apps, games, devices, passes, fonts, themes, tencent-android, tencent-mini. | ||
| category | string | No | Category to filter by (accepted set depends on media_type) | Photo & video | |
| price | string | No | Price filter Allowed values: all, Free, Paid, Sale. | ||
| age | string | No | Maximum-age filter Allowed values: all, TO3, TO4, TO5, TO6, TO7, TO8, TO9, TO10, TO11, TO12, TO13, TO14, TO15, TO16, TO17. | ||
| cursor | string | No | Opaque pagination cursor from a previous response's next_cursor | ||
| country | string | No | Store country/region code (ISO-2) | ||
| locale | string | No | Display locale (BCP-47) | ||
| x-api-key (header) | string | Yes | API key required |
curl -X GET "https://api.crawlora.net/api/v1/microsoftstore/search?query=spotify&media_type=all&price=all&age=all&country=us" \ -H "x-api-key: $CRAWLORA_API_KEY"
{
"code": 200,
"msg": "OK",
"data": {
"query": "spotify",
"media_type": "apps",
"price": "all",
"age": "all",
"count": 1,
"items": [
{
"product_id": "9ncbcszsjrsb",
"title": "Spotify - Music and Podcasts",
"publisher": "Spotify AB",
"categories": [
"Music"
],
"media_type": "Apps",
"kind": "app",
"average_rating": 4.3,
"rating_count": "34K",
"price": 0,
"display_price": "Free",
"free": true,
"icon_url": "https://store-images.s-microsoft.com/image/apps.10546...",
"url": "https://apps.microsoft.com/detail/9ncbcszsjrsb",
"is_application": true
}
],
"has_more": true,
"next_cursor": "bz0wJmI9OU5DQkNTWlNKUlNCLD...",
"source_url": "https://apps.microsoft.com/api/products/search?query=spotify&mediaType=apps&age=all&price=all&category=all&subscription=all&cursor=&gl=US&hl=en-US"
}
}Request schema
No body schema
Response schema
#/definitions/microsoftstore.searchResponseDoc
| Field | Type | Required | Enum | Bounds | Example | Description |
|---|---|---|---|---|---|---|
| code | integer | No | 200 | |||
| data | microsoftstore.SearchResponse | No | ||||
| data.age | string | No | all | |||
| data.category | string | No | all | |||
| data.count | integer | No | 20 | |||
| data.has_more | boolean | No | true | |||
| data.items | array | No | Product record, 27 fields: average_rating, award, categories, description, display_price, free, icon_url, is_application, is_game, is_pwa, is_subscription, is_theme and 10 more. Described under Microsoft Store Charts API. | |||
| data.media_type | string | No | all | |||
| data.next_cursor | string | No | bz0wJmI9OU5DQkNTWlNKUlNCLD... | |||
| data.price | string | No | all | |||
| data.query | string | No | spotify | |||
| data.source_url | string | No | ||||
| msg | string | No | OK |
| Status | Description | Schema |
|---|---|---|
| 400 | Bad Request | #/definitions/app.Response |
| 503 | Service Unavailable | #/definitions/app.Response |
Use environment variables for secrets and keep Crawlora API keys server-side.
curl -X GET "https://api.crawlora.net/api/v1/microsoftstore/search?query=spotify&media_type=all&price=all&age=all&country=us" \
-H "x-api-key: $CRAWLORA_API_KEY"