How to automate Microsoft Store listing updates in every language
You can keep your description, features, search terms, screenshots and What's new up to date without clicking through Partner Center one language at a time. Microsoft gives you a CSV import, the Store submission API, and two free tools built on that API. StoreFast does it from a listing editor, a REST API or a coding agent, and fills in the languages you haven't written.
If you have translators and a CSV workflow, Partner Center's import is free and works well. If you want the listing in a script, an agent or CI without writing a client for the submission API, StoreFast handles it, and it writes the languages you're missing.
- Partner Center by hand means one page per language. The CSV export puts every language in one file.
- The submission API changes the listing as JSON, but you own the token, the ZIP of images and the commit.
- StoreBroker keeps each language in an XML file for your translators. msstore edits the submission JSON from the command line.
- StoreFast saves listing changes as a draft you can edit from the dashboard, the API or an agent, and sends them with or without a package.
Can you update a listing in Partner Center without a tool?
Yes, and for a small change it's the quickest way. Microsoft's listing docs say you edit each language separately unless you export your listings and import them again. Each language needs a description and at least one screenshot, and screenshots belong to each language, so a new set means uploading it in every language.
How does the Microsoft Store listing CSV import work?
On the app overview page, Export listing gives you a UTF-8 .csv file with a row for every listing field and a column for each language. A default column fills any language you leave empty, and you add a language by typing its code in the next empty column. Import listings brings the file back. The import and export docs also say:
- Don't change the Field, ID or Type columns, or the file won't be processed.
- Images already in Partner Center appear as URLs you can reuse in other languages. New images go in by importing a folder that holds the CSV and the files.
- Clearing an image cell does nothing, but clearing a trailer's URL removes that trailer.
- Nothing from the file is saved until every error in it is fixed.
The CSV is good for handing a listing to translators. It still runs through the Partner Center website, so it can't run in CI.
How do you update a listing with the Microsoft Store submission API?
The submission API needs a Microsoft Entra application added to Partner Center with the Manager role. Its access tokens last 60 minutes, and it can't create an app or make the first submission. Those happen in Partner Center.
To change a listing, you create a submission, which starts as a copy of the last published one. Its listings object is keyed by language, and each language has a baseListing with the description, features, keywords, releaseNotes and an images array. New screenshots are marked PendingUpload in each language that uses them, put in a ZIP, and uploaded to the submission's fileUploadUrl. Then you commit the submission and poll its status until it moves from CommitStarted to PreProcessing, or to CommitFailed with the reasons.
Two things to watch. The API returns a 409 for apps that use mandatory updates or Store-managed consumable add-ons. And once anyone edits an API-made submission in Partner Center, the API can't change or commit it anymore.
What do StoreBroker and the msstore CLI do for listings?
StoreBroker is Microsoft's MIT licensed PowerShell module on top of the submission API. It keeps each language's listing in an XML file it calls a PDP, with the description, features, keywords, release notes and screenshot captions, built for localization systems to translate. Screenshots live in a folder per language, and a fallback language can supply images a language doesn't have. Update-ApplicationSubmission with -UpdateListings replaces the listings of the cloned submission with yours, deleting the existing screenshots along the way. Its usage docs note the API allows 20 requests a minute per tenant.
The msstore CLI is still in preview. For MSIX apps, msstore submission get prints the whole submission as JSON, you edit it, and submission updateMetadata or submission update sends it back. Run msstore publish before you edit, because it recreates the draft and drops metadata changes already in it. Its command docs don't cover uploading new screenshot files.
Both tools send what you give them. Each language's text is yours to write, or your translators'.
How does StoreFast automate listing updates?
StoreFast reads your live listing from Partner Center once your app's first version is published. Every change, from the Store listing page, the API or an agent, goes into one saved draft. You can send the draft on its own, or it goes out with your next update.
- Every language is on one page. Each field counts characters as you type and flags anything over the Store's limits. Errors block sending.
- It fills in missing languages. Translate missing fills the empty description, short description, features, search terms and captions of every other language in your listing's style, and never overwrites what you wrote. The translation guide covers how.
- Screenshots are uploaded once. One set goes to every language, and captions can differ per language.
- The REST API does the same from a script. GET and PATCH
/apps/:appId/listingread and change the draft, PUT/apps/:appId/screenshotsuploads a PNG, and POST/apps/:appId/listing/sendsends the changes without a package. The API reference has every field. - Coding agents get MCP tools. They use update_listing, set_screenshots, translate_listing_missing and send_listing_update. The agent shows you what changes and waits for your yes before it sends. See the MCP docs.
- The GitHub Action carries saved changes. It sends your package and translated What's new, and saved listing changes ride along with that update.
The listing editor comes with every plan. The API, the MCP server and the GitHub Action come with Indie and Studio and the free trial. StoreFast doesn't change logos, trailers or Xbox images, and it has no CSV import.
Example: update a listing from a script
This changes the English features and search terms, swaps in one new screenshot for every language, and sends the change. Setting screenshots replaces the live ones in every language, so list all the screenshots you want to keep. It needs an API key that can publish, plus curl and jq.
API=https://storefast.app/api/v1
AUTH="Authorization: Bearer $STOREFAST_API_KEY"
# 1. Change the English features and search terms
curl -s -X PATCH -H "$AUTH" -H 'Content-Type: application/json' \
-d '{"languages":{"en-us":{"features":["Search every note","Works offline"],"keywords":["note taking","markdown notes"]}}}' \
$API/apps/$APP_ID/listing
# 2. Upload a screenshot once, then use it in every language
SHOT=$(curl -s -X PUT -H "$AUTH" --data-binary @home.png $API/apps/$APP_ID/screenshots | jq -r .id)
curl -s -X PATCH -H "$AUTH" -H 'Content-Type: application/json' \
-d "$(jq -n --arg id "$SHOT" '{screenshots: [{id: $id, captions: {"en-us": "Find any note by searching"}}]}')" \
$API/apps/$APP_ID/listing
# 3. Send the changes for certification without a new package
curl -s -X POST -H "$AUTH" $API/apps/$APP_ID/listing/sendWays to automate a Microsoft Store listing
| Feature | StoreFast | Partner Center CSV | Submission API | StoreBroker | msstore CLI |
|---|---|---|---|---|---|
| How you use it | Browser, API or agent | Spreadsheet | Your code | PowerShell | Command line |
| Runs from CI or a script | Yes | No | Yes | Yes | Yes |
| Missing languages written for you | Yes | No | No | NoXML for your translators | No |
| Screenshots | Uploaded once for every language | Per languageURLs can be reused | Per languagein a ZIP | Folder per languagewith a fallback | Not in its command docs |
| Setup | Connect Partner Center once | None | Entra app and your code | Entra app and PDP files | Entra app and .NET runtime |
| Price | From $12 a monthAPI and MCP from $24 | Free | Free | Free, MIT | Free, MIT |
Who it's for
StoreFast is a good fit if
- You want search terms or features changed from a script or an agent without writing a submission API client.
- Your listing is in several languages and you don't want to write each one.
- You want one set of screenshots in every language without uploading them again and again.
Look elsewhere if
- You work with translators who return a spreadsheet. The CSV import suits that well.
- You change logos, trailers or Xbox images. Use Partner Center or the submission API.
- You manage dozens of localized listings in PowerShell already. StoreBroker was built for that.
Questions
- Is there an API for updating a Microsoft Store listing?
- Yes. Microsoft's Store submission API has a listings object in each app submission, keyed by language, with a baseListing that holds the description, features, keywords, release notes and images. You need a Microsoft Entra application added to Partner Center with the Manager role, and the app's first submission has to be made in Partner Center.
- Can I import my Microsoft Store listing from a CSV file?
- Yes. On the app overview page in Partner Center, Export listing gives you a UTF-8 .csv with a column for each language, and Import listings brings it back. New images go in by importing a folder that holds the CSV and the image files. Nothing is saved until every error in the file is fixed.
- Can I update the listing without uploading a new package?
- Yes. In the submission API, packages are only uploaded when you add new ones. In StoreFast, Send listing update on the Store listing page, or POST /apps/:appId/listing/send in the API, sends the saved listing changes for certification on their own.
- Can StoreFast translate the listing through the API?
- Not through the REST API today. Translate missing is on the Store listing page, and coding agents get it as the translate_listing_missing tool on the MCP server. Text you send through the API is saved as written.
- Does the StoreFast GitHub Action update the listing?
- The action sends your package and release notes. Listing changes you've saved, from the dashboard, the API or an agent, go out with the next update, including one the action sends.
Put your listing in a script
Connect Partner Center, create an API key and change your listing from a script or your coding agent. Try it free for 7 days, no card needed.
Sources
Facts about Microsoft's tools were checked against these pages on October 5, 2026.