JetBrains Marketplace Scraper avatar

JetBrains Marketplace Scraper

Pricing

Pay per event

Go to Apify Store
JetBrains Marketplace Scraper

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

Stas Persiianenko

Maintained by Community

Actor 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?

FieldDescription
idNumeric Marketplace plugin ID
xmlIdStable plugin XML identifier when available
namePlugin name
descriptionFull public HTML description
previewShort listing preview
downloadsPublic cumulative download count
ratingPublic average rating when available
pricingModelMarketplace pricing classification
familyMarketplace IDE family
vendorPublic vendor identity, country, and verification fields
tagsSearchable Marketplace tags
createdAtMarketplace date converted to ISO 8601
pluginUrlCanonical public listing URL
iconUrlAbsolute plugin icon URL
urlsPublic source, docs, license, forum, and support links
approvedPublic approval flag when returned
hiddenPublic hidden flag when returned
blockedPublic blocked flag when returned
monetizationAvailablePublic monetization availability
sourceAvailableWhether Marketplace reports source availability
scrapedAtUTC snapshot timestamp

How to scrape JetBrains Marketplace plugins

  1. Open the Actor input page.
  2. Add one or more search terms, plugin IDs, or plugin URLs.
  3. Choose a small maxItems value for a first run.
  4. Optionally enter IDE families or tags.
  5. Keep detail enrichment enabled for the richest output.
  6. Click Start.
  7. 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 ApifyClient
client = 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().items
print(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, and scrapedAt in 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.

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.