VS Code Marketplace Scraper
Pricing
Pay per event
VS Code Marketplace Scraper
Scrape VS Code extensions from the Marketplace — search by keyword, category, or publisher and extract install counts, ratings, versions, and metadata.
Pricing
Pay per event
Rating
0.0
(0)
Developer
Stas Persiianenko
Actor stats
0
Bookmarked
2
Total users
1
Monthly active users
3 days ago
Last modified
Categories
Share
Extract data from the Visual Studio Code Marketplace — search by keyword, browse by category, filter by publisher or tags, or look up specific extension IDs. Returns install counts, ratings, version history, categories, tags, and marketplace URLs in a clean structured format.
What does it do?
VS Code Marketplace Scraper connects to the official VS Code Gallery API and extracts structured data about extensions. You can:
- 🔍 Search for extensions by keyword (e.g. "python", "linter", "git")
- 📂 Browse by category (Themes, Debuggers, Programming Languages, Snippets, Linters, etc.)
- 👤 Filter by publisher (e.g. "ms-vscode", "ms-python", "GitHub")
- 🏷️ Filter by tag (e.g. "formatter", "javascript", "docker")
- 🆔 Fetch specific extensions by their ID (e.g. "ms-python.python")
- 📊 Sort results by install count, rating, publish date, or last updated date
All data comes directly from the official VS Code Marketplace API — no browser needed, no scraping of HTML pages.
Who is it for?
🧑💻 Developer tool researchers
Track the competitive landscape in VS Code extensions. Which formatters are winning? How is ESLint doing compared to Biome? What new AI extensions are trending? Get hard install numbers and ratings across any category.
📈 Extension publishers & analytics teams
Monitor your own extensions and competitors. Compare install counts, ratings, and update frequency across your portfolio. Feed data into dashboards to track growth week-over-week.
🤖 AI & data science teams
Build datasets of VS Code extensions for recommendations, categorization, or training data. The structured output is ready for pandas, BigQuery, or any data pipeline.
🛠️ Developer productivity teams
Find the best-rated tools in each category to standardize across your engineering org. Compare linters, formatters, and debuggers by install count and community satisfaction.
Why use this scraper?
The VS Code Marketplace website limits search to 50 results per page and lacks bulk export. This actor:
- Fetches up to 10,000 extensions per run with automatic pagination
- Returns complete metadata including install counts, ratings, categories, and tags
- Works without a browser — fast and cheap HTTP API calls
- No authentication required — uses the public Gallery API
- Structured output ready for spreadsheets, databases, or data pipelines
What data does it extract?
| Field | Type | Description |
|---|---|---|
extensionName | string | Full extension ID (e.g. ms-python.python) |
displayName | string | Human-readable name (e.g. Python) |
publisherName | string | Publisher slug (e.g. ms-python) |
publisherDisplayName | string | Publisher display name (e.g. Microsoft) |
publisherVerified | boolean | Whether publisher domain is verified |
shortDescription | string | Extension description |
categories | array | Extension categories (e.g. ["Programming Languages"]) |
tags | array | Extension tags (system tags filtered out) |
latestVersion | string | Current version number |
publishedDate | string | Date first published (ISO 8601) |
lastUpdated | string | Date last updated (ISO 8601) |
releaseDate | string | Public release date (ISO 8601) |
installCount | number | Total install count |
downloadCount | number | Recent download count |
updateCount | number | Total update count |
averageRating | number | Average rating (0–5) |
ratingCount | number | Number of ratings |
weightedRating | number | Weighted rating score |
trendingDaily | number | Daily trending score |
trendingWeekly | number | Weekly trending score |
trendingMonthly | number | Monthly trending score |
marketplaceUrl | string | Direct URL to the extension's Marketplace page |
How much does it cost to scrape VS Code Marketplace extensions?
This actor uses pay-per-result pricing. You're only charged for extensions actually extracted — no wasted costs.
| Plan | Price per extension | 100 extensions | 1,000 extensions | 10,000 extensions |
|---|---|---|---|---|
| FREE | $0.002 | $0.20 | $2.00 | $20.00 |
| BRONZE | $0.002 | $0.20 | $2.00 | $20.00 |
| SILVER | $0.0016 | $0.16 | $1.60 | $16.00 |
| GOLD | $0.0012 | $0.12 | $1.20 | $12.00 |
| PLATINUM | $0.0008 | $0.08 | $0.80 | $8.00 |
| DIAMOND | $0.0006 | $0.06 | $0.60 | $6.00 |
Plus a flat $0.005 start fee per run.
Free plan estimate: The Apify free plan ($0 credit/month) gives approximately 200–250 extensions per month.
Since this actor uses only HTTP API calls (no browser), runs are fast and inexpensive. A search for 1,000 extensions takes about 10–15 seconds.
How to use VS Code Marketplace Scraper
Step 1 — Create a free Apify account
Sign up at apify.com — no credit card required. The free plan gives you enough credits to test.
Step 2 — Open the actor
Go to https://apify.com/automation-lab/vscode-marketplace-scraper and click Try for free.
Step 3 — Configure your input
Choose your search mode:
Search by keyword:
{"searchQuery": "linter","maxResults": 100,"sortBy": "installs"}
Browse by category:
{"categories": ["Themes"],"maxResults": 200,"sortBy": "installs"}
Filter by publisher:
{"publisherName": "ms-vscode","maxResults": 50,"sortBy": "installs"}
Fetch specific extensions:
{"extensionIds": ["ms-python.python", "esbenp.prettier-vscode"],"maxResults": 10}
Step 4 — Run and export
Click Start and wait for the run to complete. Download results as JSON, CSV, or Excel from the Dataset tab.
Input parameters
| Parameter | Type | Default | Description |
|---|---|---|---|
searchQuery | string | — | Keyword or phrase to search for |
publisherName | string | — | Publisher to filter by (e.g. ms-vscode) |
extensionIds | array | — | Specific extension IDs in publisher.name format |
categories | array | — | Categories to filter by |
tags | array | — | Tags to filter by |
maxResults | integer | 100 | Maximum number of extensions to return |
sortBy | string | installs | Sort order: relevance, installs, rating, publishedDate, updatedDate |
maxRequestRetries | integer | 3 | Max retries for failed API calls |
Valid categories: Programming Languages, Snippets, Linters, Themes, Debuggers, Formatters, Keymaps, SCM Providers, Other, Extension Packs, Language Packs, Data Science, Machine Learning, Visualization, Notebooks, Education, Testing
Output example
{"extensionId": "f1f59ae4-9318-4f3c-a9b5-81b2eaa5f8a5","extensionName": "ms-python.python","displayName": "Python","publisherName": "ms-python","publisherDisplayName": "Microsoft","publisherVerified": true,"shortDescription": "Python language support with extension access points for IntelliSense...","categories": ["Programming Languages", "Debuggers", "Data Science"],"tags": ["python", "linters", "django", "unittest"],"latestVersion": "2026.5.1","publishedDate": "2016-01-19T15:03:11.337Z","lastUpdated": "2026-04-26T21:39:15.593Z","installCount": 216379645,"averageRating": 4.2,"ratingCount": 628,"trendingMonthly": 2.148,"marketplaceUrl": "https://marketplace.visualstudio.com/items?itemName=ms-python.python"}
Tips for getting the best results
- 🎯 Combine category + keyword for focused results: set
categories: ["Linters"]andsearchQuery: "javascript"to find JS-specific linters - 📊 Sort by
updatedDateto find actively maintained extensions - 🔍 Use
extensionIdsfor competitor monitoring — track specific extensions and check their metrics daily via the API - 💡 Tags vs categories — categories are broad groupings; tags are more granular. Use tags to find extensions for specific languages or tools (e.g. tag
"docker","rust","graphql") - ⚡ Pagination is automatic — set
maxResults: 10000and the actor handles all pagination automatically
Integrations
📊 Export to Google Sheets
- Run this actor to get a list of extensions (e.g. top 200 Python tools)
- Use the Apify Google Sheets integration to export the dataset directly to a spreadsheet
- Use Google Sheets formulas to build a competitive analysis dashboard
🔔 Monitor your extension's rank daily
- Use
extensionIdsmode with your extension ID - Set up a scheduled run (daily or weekly)
- Use Apify webhooks to post results to Slack when your install count or rating changes
🐍 Feed data into pandas for analysis
import pandas as pdimport requestsrun_id = "YOUR_RUN_ID"api_key = "YOUR_APIFY_API_KEY"url = f"https://api.apify.com/v2/datasets/{run_id}/items?token={api_key}&format=json"df = pd.read_json(url)# Top 10 by installsprint(df.nlargest(10, 'installCount')[['displayName', 'installCount', 'averageRating']])
🗄️ Load into BigQuery or Snowflake
Export the dataset as NDJSON from the Apify dataset API and load it directly into BigQuery using bq load or into Snowflake using the Snowflake Python connector.
API usage examples
Node.js
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: 'YOUR_API_TOKEN' });const run = await client.actor('automation-lab/vscode-marketplace-scraper').call({searchQuery: 'python',maxResults: 100,sortBy: 'installs',});const { items } = await client.dataset(run.defaultDatasetId).listItems();console.log(`Got ${items.length} extensions`);console.log('Top extension:', items[0].displayName, '-', items[0].installCount, 'installs');
Python
from apify_client import ApifyClientclient = ApifyClient("YOUR_API_TOKEN")run = client.actor("automation-lab/vscode-marketplace-scraper").call(run_input={"searchQuery": "python","maxResults": 100,"sortBy": "installs",})items = list(client.dataset(run["defaultDatasetId"]).iterate_items())print(f"Got {len(items)} extensions")print(f"Top: {items[0]['displayName']} — {items[0]['installCount']:,} installs")
cURL
# Start a runcurl -X POST "https://api.apify.com/v2/acts/automation-lab~vscode-marketplace-scraper/runs?token=YOUR_TOKEN" \-H "Content-Type: application/json" \-d '{"searchQuery": "python","maxResults": 100,"sortBy": "installs"}'# Fetch results (replace DATASET_ID from run response)curl "https://api.apify.com/v2/datasets/DATASET_ID/items?token=YOUR_TOKEN&format=json"
MCP — use with Claude and AI assistants
You can connect this actor to Claude Code, Claude Desktop, or any MCP-compatible AI assistant to query the VS Code Marketplace conversationally.
Claude Code (terminal)
$claude mcp add --transport http apify "https://mcp.apify.com?tools=automation-lab/vscode-marketplace-scraper"
Claude Desktop / Cursor / VS Code (JSON config)
{"mcpServers": {"apify": {"type": "http","url": "https://mcp.apify.com?tools=automation-lab/vscode-marketplace-scraper","headers": {"Authorization": "Bearer YOUR_APIFY_TOKEN"}}}}
Example prompts for Claude
"Find the top 20 most installed VS Code extensions for Rust development"
"What are the highest-rated debugging extensions with at least 100,000 installs?"
"List all extensions published by the GitHub publisher sorted by install count"
"Get the metadata for ms-python.python, esbenp.prettier-vscode, and ms-vscode.cpptools"
Legality
This actor uses the official public VS Code Marketplace Gallery API — the same API used by VS Code itself to install extensions. No login is required, no private data is accessed, and no rate limits are circumvented. All data returned is publicly accessible on the Marketplace website.
Scraped data is intended for research, analytics, and legitimate competitive intelligence purposes. Do not use this actor to spam extension publishers or misuse their extension metadata commercially.
FAQ — Frequently asked questions
What's the difference between searchQuery and categories?
searchQuery does a full-text search across extension names, descriptions, and publishers. categories is a structured filter that matches only extensions classified under a specific category (like "Themes" or "Debuggers"). You can combine both for precise results.
Can I search by multiple categories at once?
Yes — pass multiple values in the categories array. Note that the Marketplace API may return the intersection or union depending on filter logic. Test with a small maxResults first to verify behavior.
Why does my publisher filter return unrelated extensions?
Publisher filtering uses text search (there is no dedicated publisher filter in the public Gallery API). The publisher name is used as a search keyword, which means extensions that mention that publisher name in their description may also appear. For high-precision publisher lookups, use extensionIds with a list of known extension IDs.
How do I troubleshoot a run that returns 0 results?
- Check your category spelling — categories are case-sensitive (
"Themes"not"themes") - Try broadening the search: remove some filters
- Check that your extension IDs are in
publisher.extensionNameformat (e.g.ms-python.python) - The Marketplace API may be temporarily unavailable — try again in a few minutes
Is there a rate limit?
The VS Code Marketplace API is a high-throughput public API. This actor uses reasonable pagination (100 items per page) and doesn't hammer the API. No rate limits have been observed in testing with up to 10,000 items.
Related scrapers
- GitHub Scraper — scrape GitHub repositories, issues, and user profiles
- npm Package Scraper — extract npm package metadata including download counts and dependencies