Visual Studio Marketplace API: Get VS Code extension
Finds a VS Code Marketplace extension by name or marketplace link and returns its publisher, installs, rating, version, categories and update date. For a name search it picks the most-installed close match.
Unofficial. Not affiliated with or endorsed by Visual Studio Marketplace.
Inputs
Values from the run on Oct 23, 2026, shown under Output.
- Extension, required
extension Extension name or marketplace link, for example Prettier or https://marketplace.visualstudio.com/items?itemName=esbenp.prettier-vscode.
https://marketplace.visualstudio.com/items?itemName=ms-python.python
Input as JSON
{ "extension": "https://marketplace.visualstudio.com/items?itemName=ms-python.python" }Output
{ "installs": 242314028, "publisher": "Microsoft", "categories": [ "Programming Languages", "Debuggers", "Data Science" ], "display_name": "Python", "rating_count": 631, "average_rating": 4.206022262573242, "latest_version": "2026.11.2026102101", "marketplace_link": "https://marketplace.visualstudio.com/items?itemName=ms-python.python" , "last_updated_date": "2026-10-21", "short_description": "Python language support with extension access points for IntelliSense (Pylance), Debugging (Python Debugger), linting, formatting, refactoring, unit tests, and more.", "verified_publisher": true, "extension_identifier": "ms-python.python"}Code
curl https://api.fous.com/v1/runs \ -H "Authorization: Bearer $FOUS_API_KEY" \ -H "Content-Type: application/json" \ -d '{"method":"marketplace.visualstudio.com/get_extension","input":{"extension":"https://marketplace.visualstudio.com/items?itemName=ms-python.python"}}' # Save as fous.py, then run: python3 fous.pyimport json, os, timefrom urllib.error import HTTPErrorfrom urllib.request import Request, urlopenAPI = "https://api.fous.com/v1/runs" KEY = os.environ["FOUS_API_KEY"]HEADERS = { "Authorization": f"Bearer {KEY}", "Content-Type": "application/json" ,}def call(url, body=None): data = json.dumps(body).encode() if body else None request = Request(url, data, HEADERS) try: with urlopen(request, timeout=120) as r: return r.status, json.load(r) except HTTPError as error: message = json.load(error)["error"]["message"] raise RuntimeError(message) from errorstatus, run = call(API, { "method": "marketplace.visualstudio.com/get_extension" , "input": { "extension": "https://marketplace.visualstudio.com/items?itemName=ms-python.python" }})# 202: still going after 30 s. Ask again until it ends.while status == 202: time.sleep(2) status, run = call(f"{API}/{run['id']}")print(json.dumps(run["data"], indent=2))// Save as fous.mjs, then run: node fous.mjsconst api = "https://api.fous.com/v1/runs" ;const headers = { Authorization: `Bearer ${process.env.FOUS_API_KEY}`, "Content-Type": "application/json" ,};let response = await fetch(api, { method: "POST", headers, body: JSON.stringify({ "method": "marketplace.visualstudio.com/get_extension" , "input": { "extension": "https://marketplace.visualstudio.com/items?itemName=ms-python.python" } }), signal: AbortSignal.timeout(120_000),});let run = await response.json();// 202: still going after 30 s. Ask again until it ends.while (response.status === 202) { await new Promise((done) => setTimeout(done, 2_000)); response = await fetch(`${api}/${run.id}`, { headers }); run = await response.json();}if (!response.ok) throw new Error(run.error.message);console.log(run.data);# Connect your agent to Fous once, over MCP (Streamable HTTP):# https://api.fous.com/mcp# Set FOUS_API_KEY first: create a key at https://app.fous.com/keys.# Claude Codeclaude mcp add \ --scope user \ --transport http fous https://api.fous.com/mcp \ --header "Authorization: Bearer ${FOUS_API_KEY:?Set FOUS_API_KEY to your Fous API key}"# Codexcodex mcp add fous \ --url https://api.fous.com/mcp \ --bearer-token-env-var FOUS_API_KEY# Cursor, VS Code, Windsurf, Cline and morenpx -y add-mcp https://api.fous.com/mcp -g -n fous \ --header "Authorization: Bearer ${FOUS_API_KEY:?Set FOUS_API_KEY to your Fous API key}"# Then ask your agent:# "Use Fous to run marketplace.visualstudio.com/get_extension# with {"extension":"https://marketplace.visualstudio.com/items?itemName=ms-python.python"}"Over HTTP, the answer’s data holds the output. A run still going after 30 seconds answers 202 with its id: ask GET /v1/runs/{id} until it ends.
Schema
Input schema
{ "type": "object", "required": [ "extension" ], "properties": { "extension": { "type": "string", "description": "Extension name or marketplace link, for example Prettier or https://marketplace.visualstudio.com/items?itemName=esbenp.prettier-vscode." } }, "additionalProperties": false}Output schema
{ "type": "object", "required": [ "display_name", "publisher", "verified_publisher", "short_description", "installs", "average_rating", "rating_count", "latest_version", "last_updated_date", "categories", "marketplace_link", "extension_identifier" ], "properties": { "installs": { "type": [ "integer", "null" ], "description": "Number of installs." }, "publisher": { "type": "string", "description": "Publisher display name." }, "categories": { "type": "array", "items": { "type": "string" }, "description": "Marketplace categories." }, "display_name": { "type": "string", "description": "Name of the extension." }, "rating_count": { "type": [ "integer", "null" ], "description": "Number of ratings." }, "average_rating": { "type": [ "number", "null" ], "description": "Average rating out of 5." }, "latest_version": { "type": [ "string", "null" ], "description": "Latest listed version." }, "marketplace_link": { "type": "string", "description": "Extension listing link." }, "last_updated_date": { "type": [ "string", "null" ], "format": "date", "description": "Last updated date (YYYY-MM-DD)." }, "short_description": { "type": [ "string", "null" ], "description": "Short description from the listing." }, "verified_publisher": { "type": "boolean", "description": "Whether the publisher has a verified domain." }, "extension_identifier": { "type": "string", "description": "Publisher and extension name (publisher.name).", "x-fous-developer": true } }, "additionalProperties": false}- Price
- 1 credit per completed run (1¢ with pay as you go); failed runs are free.
- Method
marketplace.visualstudio.com/get_extension- Returns
- display name, publisher, installs, rating, latest version, categories, last updated date, link, identifier
Use it from your agent
Give your agent this line. It reads SKILL.md, gets a Fous API key and connects the Fous MCP server. Its run then takes the method marketplace.visualstudio.com/get_extension with the inputs above.
Ask your agent
- How many installs does the Prettier extension have in the VS Code Marketplace, and who publishes it?
- What's the latest version and rating of the GitLens extension?
- Look up the ESLint extension on the visualstudio.com marketplace and tell me its categories and last update date.
- Find the publisher and install count for https://marketplace.visualstudio.com/items?itemName=ms-python.python
- Which VS Code extension for Docker is most popular, and when was it last updated?
See more
Looks up a Chrome Web Store extension by name or store link and returns its public listing: developer, users, rating, version, update date, size, category, description, declared privacy practices, website and store link. Permissions are null when the listing does not show them.
chromewebstore.google.com/get_extensionFinds Chrome Web Store extensions by keywords in store order, with each listing's developer, users, rating, rating count, short description and store link. Some listings omit developer, users or ratings.
chromewebstore.google.com/search_extensionsSearches Microsoft Store apps and games by keywords in a chosen country and returns them in Store order. Subscription-included items can show a price of 0.
apps.microsoft.com/search_appsLooks up the best-matching Microsoft Store app or game by name, store link or product ID, optionally filtered by publisher and country, and returns its listing details.
apps.microsoft.com/get_appLooks up a NuGet package by name or nuget.org link. Inexact names match the top search result. Returns the latest stable release's details and the 10 most recent versions, including prereleases.
nuget.org/get_packageLooks up a public npm package by name or npm link. Returns its latest version, weekly downloads, maintainers, links, dates and version count.
npmjs.com/get_packageSearches the npm registry for JavaScript packages by description or keywords, in npm's search order, and returns each package's latest version, weekly downloads and publish date.
npmjs.com/search_packagesFinds the best-matching WordPress.org plugin by name or plugin page link and returns its details, including the changelog for the latest version when one is available.
wordpress.org/get_plugin