JetBrains Marketplace Scraper
Pricing
Pay per event
JetBrains Marketplace Scraper
🔌 Extract JetBrains Marketplace plugin downloads, ratings, pricing, vendors, tags, compatibility, links, and public status flags for monitoring and research.
Pricing
Pay per event
Rating
0.0
(0)
Developer
Stas Persiianenko
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
6 days ago
Last modified
Categories
Share
Extract the public JetBrains Marketplace plugin catalog into clean, analysis-ready records.
Search by topic or target exact plugin IDs and URLs. Each result can include downloads, rating, pricing model, vendor, tags, IDE family, descriptions, links, dates, and public marketplace status flags.
Use recurring runs to monitor competitors, measure ecosystem trends, maintain plugin directories, or enrich developer-tool research.
What does JetBrains Marketplace Scraper do?
JetBrains Marketplace Scraper calls the public JSON catalog and plugin-detail endpoints at plugins.jetbrains.com.
It turns Marketplace responses into one normalized dataset row per plugin.
The Actor can:
- 🔎 search one or more Marketplace terms
- 🎯 extract exact plugin IDs or URLs
- 📊 collect downloads and ratings where available
- 💳 identify free, freemium, and paid pricing models
- 🏷️ filter records by IDE family or tag
- 🧑💻 collect public vendor identity and verification data
- 🔗 preserve plugin, source-code, license, documentation, and support links
- 🛡️ expose public moderation and monetization flags
- 🕐 timestamp every snapshot for longitudinal analysis
Who is it for?
Plugin vendors
Track your listing and comparable plugins over time. Schedule snapshots and load them into a spreadsheet, warehouse, or dashboard.
Developer relations teams
Discover extensions around a technology, framework, language, or product and build outreach lists from public vendor information.
IDE ecosystem analysts
Compare plugin categories by downloads, ratings, vendors, pricing, and compatibility family.
Security researchers
Build an inventory of plugins, source links, vendors, and public blocked or hidden flags for further review.
Competitive intelligence teams
Monitor changing marketplace presence and adoption without copying data manually from individual listing pages.
Why use this Actor?
The Marketplace is easy to browse but manual collection does not scale.
This Actor provides:
- consistent JSON records
- bounded parallel requests
- retries with exponential backoff
- optional Apify Proxy fallback
- CSV, Excel, JSON, XML, and RSS exports through Apify
- scheduling, webhooks, API access, and integrations
- stable field names despite optional upstream fields
What JetBrains Marketplace data can I extract?
| Field | Description |
|---|---|
id | Numeric Marketplace plugin ID |
xmlId | Stable plugin XML identifier when available |
name | Plugin name |
description | Full public HTML description |
preview | Short listing preview |
downloads | Public cumulative download count |
rating | Public average rating when available |
pricingModel | Marketplace pricing classification |
family | Marketplace IDE family |
vendor | Public vendor identity, country, and verification fields |
tags | Searchable Marketplace tags |
createdAt | Marketplace date converted to ISO 8601 |
pluginUrl | Canonical public listing URL |
iconUrl | Absolute plugin icon URL |
urls | Public source, docs, license, forum, and support links |
approved | Public approval flag when returned |
hidden | Public hidden flag when returned |
blocked | Public blocked flag when returned |
monetizationAvailable | Public monetization availability |
sourceAvailable | Whether Marketplace reports source availability |
scrapedAt | UTC snapshot timestamp |
How to scrape JetBrains Marketplace plugins
- Open the Actor input page.
- Add one or more search terms, plugin IDs, or plugin URLs.
- Choose a small
maxItemsvalue for a first run. - Optionally enter IDE families or tags.
- Keep detail enrichment enabled for the richest output.
- Click Start.
- Open the Dataset tab and export your results.
Input
A typical search input:
{"searchTerms": ["AI assistant", "code review"],"maxItems": 100,"includeDetails": true,"maxConcurrency": 8}
A direct-plugin input:
{"pluginIds": [164],"pluginUrls": ["https://plugins.jetbrains.com/plugin/7322-sonarlint"],"maxItems": 10}
A filtered input:
{"searchTerms": ["editor"],"families": ["intellij"],"tags": ["Editor"],"maxItems": 250}
Direct IDs and URLs are processed before search results. Duplicate IDs are emitted once.
Family and tag filters use exact case-insensitive matching against detail records.
Output example
{"id": 164,"xmlId": "IdeaVIM","name": "IdeaVim","downloads": 21436506,"rating": 4.47,"pricingModel": "FREE","family": "intellij","vendor": {"name": "JetBrains","publicName": "JetBrains s.r.o.","isVerified": true},"tags": ["Editor", "Keymap"],"pluginUrl": "https://plugins.jetbrains.com/plugin/164","sourceUrl": "https://plugins.jetbrains.com/api/plugins/164","blocked": false,"hidden": false,"scrapedAt": "2026-07-13T00:00:00.000Z"}
Optional fields are omitted when JetBrains does not return them. This avoids misleading null values.
Set includeDetails to false for a faster catalog-only run. In that mode the Actor makes zero /api/plugins/{id} detail requests and emits only fields available in search results, such as name, preview, downloads, rating, pricing, basic vendor identity, tags, and source availability. Detail-only fields (description, family, expanded vendor metadata, urls, and moderation/monetization flags) are omitted. A direct ID or URL that was not discovered through search produces a minimal identity/link record. IDE family filtering therefore requires includeDetails: true; tag filtering works in either mode.
How much does it cost to scrape JetBrains Marketplace plugins?
The Actor uses pay-per-event pricing:
- a small one-time Actor start charge
- a charge for each plugin record saved
- automatic volume discounts on supported Apify plans
The Console displays the exact price for your account before a run starts.
Use maxItems to control the maximum number of chargeable records. Searches that return fewer matching records only save and charge for those records.
Search behavior and pagination
Each search term is paginated through JetBrains' public catalog endpoint.
Results are deduplicated by numeric plugin ID across terms, IDs, and URLs.
The global maxItems limit applies across all sources.
Filters can reduce the final saved count. IDE family filters are evaluated against enriched detail records and require includeDetails: true; tag filters also work with catalog-only records.
Plugin IDs and URLs
Use IDs for the most stable direct extraction.
The Actor also recognizes standard URLs such as:
https://plugins.jetbrains.com/plugin/164-ideavim
Invalid or unavailable plugin IDs are retried and then skipped with a warning. Other valid plugins continue processing.
IDE family and tag filters
families matches the Marketplace family value, for example intellij.
tags matches at least one tag name, for example Editor or Keymap.
Filters are optional. Leave them empty for broad market discovery.
Monitoring plugin downloads and ratings
Create a scheduled Actor task with a fixed list of plugin IDs.
Run it daily, weekly, or monthly.
Store each result with its scrapedAt timestamp in a warehouse or append-only dataset.
Calculate changes between snapshots to identify adoption momentum.
Ratings are optional upstream data, so analytics should handle plugins without a rating.
Integrations
Google Sheets
Use the Google Sheets integration to send each completed dataset to a reporting workbook.
Slack and email alerts
Connect a webhook or automation platform. Alert when downloads cross a threshold or a public status flag changes.
Data warehouses
Download JSON or call the dataset API from BigQuery, Snowflake, PostgreSQL, or another ETL pipeline.
Make and Zapier
Trigger downstream workflows after a run succeeds. Filter records by pricing, tag, vendor, or download count.
API usage with JavaScript
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: process.env.APIFY_TOKEN });const run = await client.actor('automation-lab/jetbrains-marketplace-scraper').call({searchTerms: ['Kotlin'],maxItems: 100,});const { items } = await client.dataset(run.defaultDatasetId).listItems();console.log(items);
API usage with Python
from apify_client import ApifyClientclient = ApifyClient('YOUR_APIFY_TOKEN')run = client.actor('automation-lab/jetbrains-marketplace-scraper').call(run_input={'searchTerms': ['Kotlin'],'maxItems': 100,})items = client.dataset(run['defaultDatasetId']).list_items().itemsprint(items)
API usage with cURL
curl -X POST \'https://api.apify.com/v2/acts/automation-lab~jetbrains-marketplace-scraper/runs?token=YOUR_APIFY_TOKEN' \-H 'Content-Type: application/json' \-d '{"searchTerms":["Kotlin"],"maxItems":100}'
Use the returned dataset ID to fetch results after the run finishes.
Use with Apify MCP
Connect the Actor to AI assistants through the actor-scoped Apify MCP endpoint:
https://mcp.apify.com/?tools=automation-lab/jetbrains-marketplace-scraper
Authenticate with your Apify account when your MCP client opens the authorization flow.
Claude Code MCP setup
$claude mcp add --transport http apify "https://mcp.apify.com/?tools=automation-lab/jetbrains-marketplace-scraper"
Confirm the server is available with claude mcp list, then start Claude Code and ask it to run the Actor.
Claude Desktop MCP setup
Add this server to the mcpServers object in your Claude Desktop configuration, then restart Claude Desktop:
{"mcpServers": {"apify": {"url": "https://mcp.apify.com/?tools=automation-lab/jetbrains-marketplace-scraper"}}}
Cursor MCP setup
Create or update .cursor/mcp.json in your project:
{"mcpServers": {"apify": {"url": "https://mcp.apify.com/?tools=automation-lab/jetbrains-marketplace-scraper"}}}
VS Code MCP setup
Create or update .vscode/mcp.json, and start the server from VS Code's MCP servers view:
{"servers": {"apify": {"type": "http","url": "https://mcp.apify.com/?tools=automation-lab/jetbrains-marketplace-scraper"}}}
Example prompts:
- “Find 50 JetBrains plugins related to database development and rank them by downloads.”
- “Extract these Marketplace plugin URLs and compare vendors, pricing, ratings, and source availability.”
- “Build a weekly snapshot of IntelliJ editor plugins.”
Tips for reliable runs
- Start with 10–25 records while testing a workflow.
- Prefer plugin IDs for repeat monitoring.
- Keep concurrency at the default unless rate limiting occurs.
- Lower concurrency before enabling a proxy.
- Use exact Marketplace family and tag values.
- Remember that filters may produce fewer rows than
maxItems. - Preserve
id,xmlId, andscrapedAtin historical datasets.
Error handling
Temporary rate limits and server errors use bounded exponential retries.
One unavailable detail record does not stop the whole run.
If direct access is restricted from your environment, enable Apify Proxy in the Network section.
The Actor logs discovered and saved counts at completion.
Data quality and schema drift
JetBrains' endpoints are public but not guaranteed to return every optional field for every plugin.
Identity fields are normalized consistently. Optional fields are emitted only when available.
Absolute plugin, icon, and API source URLs make records traceable.
Public HTML descriptions are preserved as returned so users can retain formatting or sanitize them downstream.
Legality and responsible use
This Actor accesses public, anonymous Marketplace data.
You are responsible for using outputs in accordance with applicable laws, JetBrains' terms, and your intended jurisdiction.
Avoid collecting more data than necessary. Do not use the Actor to circumvent authentication or access private vendor analytics.
Limitations
V1 does not extract plugin reviews.
V1 does not access private vendor download histories, sales, customer identities, or account analytics.
Public download totals and ratings may change between runs.
Search ranking belongs to JetBrains and may change without notice.
FAQ
Does the Actor require a JetBrains account?
No. It uses public anonymous catalog and detail endpoints.
Can I scrape one exact plugin?
Yes. Enter its numeric ID or Marketplace URL.
Why did I receive fewer records than maxItems?
The search may contain fewer results, duplicate plugins may be removed, or family/tag filters may exclude records.
Why is rating missing?
JetBrains does not expose a rating for every plugin. Missing optional fields are omitted rather than guessed.
What should I do if requests are rate-limited?
Reduce maxConcurrency. If direct requests remain restricted, enable Apify Proxy as a fallback.
Can I schedule download monitoring?
Yes. Save a task with fixed plugin IDs and use Apify Scheduler. Compare downloads across scrapedAt timestamps.
Are descriptions plain text?
No. Full descriptions may contain safe Marketplace HTML formatting. Use preview for a short text-oriented summary.
Related scrapers
Explore other marketplace and catalog automation from automation-lab, including the Apple App Store Scraper for mobile application intelligence.
Combine marketplace sources in a warehouse when your research spans developer tools and mobile apps.
Support
If a valid public plugin does not appear, include the input and run URL in an Actor issue.
For schema requests, describe the public Marketplace field and the downstream workflow it enables.
Private vendor analytics and authenticated surfaces remain outside this Actor's scope.