# VS Code Marketplace Change Tracker (`crawlerbros/vscode-marketplace-change-tracker`) Actor

Monitor VS Code Marketplace for newly published or recently updated extensions. Filter by category and date range to track marketplace changes over time

- **URL**: https://apify.com/crawlerbros/vscode-marketplace-change-tracker.md
- **Developed by:** [Crawler Bros](https://apify.com/crawlerbros) (community)
- **Categories:** Developer tools, Automation, Other
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 7 bookmarks
- **User rating**: 5.00 out of 5 stars

## Pricing

from $3.00 / 1,000 results

This Actor is paid per event and usage. You are charged both the fixed price for specific events and for Apify platform usage.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

Learn more: https://docs.apify.com/platform/actors/running/actors-in-store#pay-per-event

## What's an Apify Actor?

Actors are a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.
The best way to integrate Actors is as follows.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp.md).

If your project is in a different language, use the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).


# README

## VS Code Marketplace Change Tracker

Monitor the Visual Studio Code Marketplace for newly published or recently updated extensions. Filter by category and date range to track changes over time, build changelogs, or detect trends.

### What you can track

- **Recently updated** — extensions sorted by last update date
- **Newly published** — extensions sorted by publication date (newest first)
- **Trending** — extensions rising in quality scores

### Use cases

| Goal | Mode |
|---|---|
| Daily changelog of VS Code ecosystem | `recentlyUpdated` |
| Discover new extensions in your category | `newlyPublished` + category filter |
| Track what's gaining momentum | `trending` |
| Monitor a specific category for changes | Any mode + `category` |
| Build a "what's new this week" report | Any mode + `sinceDate` |
| Alert when new AI extensions appear | `newlyPublished` + category=Chat |

---

### Input parameters

| Parameter | Type | Description | Required |
|---|---|---|---|
| `mode` | select | `recentlyUpdated`, `newlyPublished`, `trending` | Yes |
| `category` | select | Filter to a single category (optional) | No |
| `sinceDate` | string | Only return extensions updated/published on or after this date. Format: `YYYY-MM-DD` | No |
| `maxItems` | integer | Maximum extensions to return (1–200, default 50) | No |

#### Available categories

`Programming Languages`, `Snippets`, `Linters`, `Themes`, `Debuggers`, `Formatters`, `Keymaps`, `SCM Providers`, `Other`, `Azure`, `Data Science`, `Machine Learning`, `Visualization`, `Notebooks`, `Education`, `Testing`, `Extension Packs`, `Language Packs`, `Chat`

---

### Output fields

Each record contains all extension metadata plus a `changeType` field:

| Field | Type | Description |
|---|---|---|
| `extensionId` | string | Internal GUID of the extension |
| `extensionName` | string | Short name (e.g., `python`) |
| `displayName` | string | Human-readable name |
| `publisherName` | string | Publisher slug |
| `publisherDisplayName` | string | Publisher display name |
| `description` | string | Short extension description |
| `version` | string | Latest version string |
| `publishedDate` | string | ISO-8601 date first published |
| `lastUpdated` | string | ISO-8601 date last updated |
| `changeType` | string | `updated` (for recentlyUpdated/trending) or `new` (for newlyPublished) |
| `categories` | array | Category list |
| `tags` | array | Searchable tags (internal `__` tags excluded) |
| `installCount` | integer | Total install count |
| `rating` | float | Average user rating (0–5) |
| `ratingCount` | integer | Number of ratings |
| `trendingWeekly` | float | Weekly trending score |
| `extensionUrl` | string | Marketplace page URL |
| `iconUrl` | string | Extension icon URL |
| `repositoryUrl` | string | Source repository URL (when available) |
| `licenseUrl` | string | License file URL (when available) |
| `scrapedAt` | string | ISO-8601 timestamp when scraped |

---

### Sample output

```json
{
  "extensionId": "aaaabbbb-cccc-dddd-eeee-ffffffffffff",
  "extensionName": "ai-helper",
  "displayName": "AI Code Helper",
  "publisherName": "acmepub",
  "publisherDisplayName": "ACME Publisher",
  "description": "AI-powered code suggestions for VS Code.",
  "version": "0.2.0",
  "publishedDate": "2026-05-18T09:00:00.000+00:00",
  "lastUpdated": "2026-05-19T14:30:00.000+00:00",
  "changeType": "new",
  "categories": ["Chat"],
  "tags": ["ai", "copilot", "code-completion"],
  "installCount": 1200,
  "rating": 4.6,
  "ratingCount": 18,
  "trendingWeekly": 0.85,
  "extensionUrl": "https://marketplace.visualstudio.com/items?itemName=acmepub.ai-helper",
  "iconUrl": "https://acmepub.gallerycdn.vsassets.io/extensions/acmepub/ai-helper/.../icon",
  "repositoryUrl": "https://github.com/acme/ai-helper",
  "scrapedAt": "2026-05-20T10:00:00.000000+00:00"
}
````

***

### Scheduling this actor

This actor is designed for recurring runs. Suggested schedule:

| Frequency | Mode | sinceDate | Use |
|---|---|---|---|
| Daily | `recentlyUpdated` | yesterday's date | Daily update log |
| Weekly | `newlyPublished` | 7 days ago | Weekly new extensions report |
| Hourly | `trending` | — | Real-time trend monitoring |

***

### FAQ

**Do I need an API key?**
No. The VS Code Marketplace Gallery API is publicly accessible.

**What is `changeType`?**
`"new"` means the extension was recently published for the first time. `"updated"` means it was updated since its initial release.

**How does `sinceDate` work?**
For `recentlyUpdated` and `trending`, it filters by `lastUpdated`. For `newlyPublished`, it filters by `publishedDate`. Extensions with dates before `sinceDate` are excluded.

**Can I combine `sinceDate` and `category`?**
Yes — both filters apply together.

**How many results can I get?**
Up to 200 per run. For larger datasets or longer time windows, schedule multiple runs.

**Why are some fields missing?**
Fields like `repositoryUrl` are only included when the publisher has provided them. The actor never emits null values.

***

### Data source

This actor uses the [VS Code Marketplace Gallery API](https://marketplace.visualstudio.com/_apis/public/gallery/extensionquery) — the same endpoint VS Code uses to browse extensions. No authentication required.

# Actor input Schema

## `mode` (type: `string`):

What type of changes to track.

## `category` (type: `string`):

Only include extensions from this category.

## `sinceDate` (type: `string`):

Only include extensions updated/published on or after this date. Format: YYYY-MM-DD (e.g. 2026-05-01). Leave empty for no date filter.

## `maxItems` (type: `integer`):

Maximum number of extensions to return.

## Actor input object example

```json
{
  "mode": "recentlyUpdated",
  "maxItems": 50
}
```

# Actor output Schema

## `extensions` (type: `string`):

Dataset containing recently changed VS Code Marketplace extensions.

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "mode": "recentlyUpdated",
    "maxItems": 50
};

// Run the Actor and wait for it to finish
const run = await client.actor("crawlerbros/vscode-marketplace-change-tracker").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "mode": "recentlyUpdated",
    "maxItems": 50,
}

# Run the Actor and wait for it to finish
run = client.actor("crawlerbros/vscode-marketplace-change-tracker").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print("💾 Check your data here: https://console.apify.com/storage/datasets/" + run["defaultDatasetId"])
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "mode": "recentlyUpdated",
  "maxItems": 50
}' |
apify call crawlerbros/vscode-marketplace-change-tracker --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=crawlerbros/vscode-marketplace-change-tracker",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "VS Code Marketplace Change Tracker",
        "description": "Monitor VS Code Marketplace for newly published or recently updated extensions. Filter by category and date range to track marketplace changes over time",
        "version": "1.0",
        "x-build-id": "bQNlGXpcpL5ykOuL8"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/crawlerbros~vscode-marketplace-change-tracker/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-crawlerbros-vscode-marketplace-change-tracker",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/acts/crawlerbros~vscode-marketplace-change-tracker/runs": {
            "post": {
                "operationId": "runs-sync-crawlerbros-vscode-marketplace-change-tracker",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor and returns information about the initiated run in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/runsResponseSchema"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/acts/crawlerbros~vscode-marketplace-change-tracker/run-sync": {
            "post": {
                "operationId": "run-sync-crawlerbros-vscode-marketplace-change-tracker",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "required": [
                    "mode"
                ],
                "properties": {
                    "mode": {
                        "title": "Mode",
                        "enum": [
                            "recentlyUpdated",
                            "newlyPublished",
                            "trending"
                        ],
                        "type": "string",
                        "description": "What type of changes to track.",
                        "default": "recentlyUpdated"
                    },
                    "category": {
                        "title": "Category filter (optional)",
                        "enum": [
                            "Programming Languages",
                            "Snippets",
                            "Linters",
                            "Themes",
                            "Debuggers",
                            "Formatters",
                            "Keymaps",
                            "SCM Providers",
                            "Other",
                            "Azure",
                            "Data Science",
                            "Machine Learning",
                            "Visualization",
                            "Notebooks",
                            "Education",
                            "Testing",
                            "Extension Packs",
                            "Language Packs",
                            "Chat"
                        ],
                        "type": "string",
                        "description": "Only include extensions from this category."
                    },
                    "sinceDate": {
                        "title": "Since date (optional)",
                        "type": "string",
                        "description": "Only include extensions updated/published on or after this date. Format: YYYY-MM-DD (e.g. 2026-05-01). Leave empty for no date filter."
                    },
                    "maxItems": {
                        "title": "Max items",
                        "minimum": 1,
                        "maximum": 200,
                        "type": "integer",
                        "description": "Maximum number of extensions to return.",
                        "default": 50
                    }
                }
            },
            "runsResponseSchema": {
                "type": "object",
                "properties": {
                    "data": {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": "string"
                            },
                            "actId": {
                                "type": "string"
                            },
                            "userId": {
                                "type": "string"
                            },
                            "startedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "finishedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "status": {
                                "type": "string",
                                "example": "READY"
                            },
                            "meta": {
                                "type": "object",
                                "properties": {
                                    "origin": {
                                        "type": "string",
                                        "example": "API"
                                    },
                                    "userAgent": {
                                        "type": "string"
                                    }
                                }
                            },
                            "stats": {
                                "type": "object",
                                "properties": {
                                    "inputBodyLen": {
                                        "type": "integer",
                                        "example": 2000
                                    },
                                    "rebootCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "restartCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "resurrectCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "computeUnits": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "options": {
                                "type": "object",
                                "properties": {
                                    "build": {
                                        "type": "string",
                                        "example": "latest"
                                    },
                                    "timeoutSecs": {
                                        "type": "integer",
                                        "example": 300
                                    },
                                    "memoryMbytes": {
                                        "type": "integer",
                                        "example": 1024
                                    },
                                    "diskMbytes": {
                                        "type": "integer",
                                        "example": 2048
                                    }
                                }
                            },
                            "buildId": {
                                "type": "string"
                            },
                            "defaultKeyValueStoreId": {
                                "type": "string"
                            },
                            "defaultDatasetId": {
                                "type": "string"
                            },
                            "defaultRequestQueueId": {
                                "type": "string"
                            },
                            "buildNumber": {
                                "type": "string",
                                "example": "1.0.0"
                            },
                            "containerUrl": {
                                "type": "string"
                            },
                            "usage": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "integer",
                                        "example": 1
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "usageTotalUsd": {
                                "type": "number",
                                "example": 0.00005
                            },
                            "usageUsd": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "number",
                                        "example": 0.00005
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
