# Maven Central Artifact & Dependency Monitor (`automation-lab/maven-central-artifact-dependency-monitor`) Actor

Monitor Maven Central coordinates, artifact searches, and POM dependencies for release tracking and Java dependency inventory.

- **URL**: https://apify.com/automation-lab/maven-central-artifact-dependency-monitor.md
- **Developed by:** [Stas Persiianenko](https://apify.com/automation-lab) (community)
- **Categories:** Developer tools
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

Pay per event

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
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

## Maven Central Artifact & Dependency Monitor

Monitor public Maven Central artifacts for releases, version history, packaging, and declared POM dependencies.

### What does it do?

This actor turns Maven coordinates, Maven Central searches, and artifact URLs into structured artifact records. Schedule it to inventory Java dependencies or detect Maven releases.

### Who is it for?

#### Java platform teams — maintain a dependency inventory

Run exact coordinates on a schedule, export the latest versions and direct dependencies, and compare the dataset with your approved package catalog.

#### DevSecOps teams — scope dependency reviews

Map the direct dependencies declared in each latest POM before sending coordinates and versions to your approved vulnerability or policy tooling.

#### Developer-tool vendors — refresh package metadata

Use bounded Solr searches to discover public artifacts, then store typed Maven metadata for a package directory, IDE integration, or internal developer portal.

### Why use it?

- No Maven Central account or browser is needed.
- Returns typed dependency objects instead of POM XML.
- Supports individual coordinates and bounded discovery searches.

### Data returned

| Field | Description |
|---|---|
| `coordinate` | Maven `groupId:artifactId` |
| `latestVersion` | Latest Maven Central version |
| `versionHistory` | Recent versions |
| `dependencies` | Declared latest-POM dependencies |
| `dependencyStatus` | POM fetch outcome |
| `sourceUrl` | Maven Central artifact page |

### How to run from the Apify Store

1. Open the [Maven Central Artifact & Dependency Monitor](https://apify.com/automation-lab/maven-central-artifact-dependency-monitor) page in the Apify Store.
2. In **Maven coordinates**, enter one or more `groupId:artifactId` values, or select a Solr-query or artifact-URL input mode below.
3. Keep **Max artifacts** low for the first run and choose whether to include latest-POM dependencies.
4. Click **Start**, then wait for the run to finish.
5. Open the dataset to inspect results, or export JSON, CSV, Excel, or RSS for your inventory workflow.

### Quick start

Enter `org.springframework:spring-core` in **Maven coordinates**, keep the low prefill limit, then run the actor.

### Monitor coordinates

Provide one coordinate per entry. A coordinate must contain both group ID and artifact ID.

```json
{"coordinates":["org.springframework:spring-core"],"maxArtifacts":1}
````

### Search Maven Central

Use public Maven Central Solr query syntax for a bounded artifact inventory.

```json
{"solrQueries":["g:\"org.apache.commons\""],"maxArtifacts":10,"includeDependencies":false}
```

### Use artifact URLs

Paste Maven Central artifact pages or repository POM URLs when a workflow already stores links.

### Dependency details

When **Include POM dependencies** is enabled, every row includes declared group ID, artifact ID, version, scope, and optional flag. Dependency-management inheritance is not resolved; values reflect the artifact's published latest POM.

### Version history

Set **Version history limit** to control the newest versions returned per artifact. This is useful for release-change monitoring without fetching all historical POMs.

### Input reference

| Input | Use |
|---|---|
| `coordinates` | Exact artifact monitoring |
| `solrQueries` | Bounded Maven Central discovery |
| `artifactUrls` | Link-based lookup |
| `maxArtifacts` | Unique output-row cap |
| `includeDependencies` | Fetch latest POM dependencies |
| `versionHistoryLimit` | Recent version cap |

### Output reference

A dataset row always represents one Maven artifact. Arrays such as `versionHistory`, `availableExtensions`, and `dependencies` remain typed for exports and API use.

### How much does it cost to monitor Maven Central artifacts?

Pricing is per produced artifact record plus a small run start event. Larger-volume tier discounts are configured on Apify. Check the actor page for the active tiered price.

### Schedule monitoring

Use an Apify schedule with the same coordinate list. Compare `latestVersion`, `versionHistory`, and dependency arrays in your downstream alerting workflow.

### Integrations

- Export records to a security inventory.
- Send version changes to Slack through an Apify webhook.
- Compare dependency lists in CI or a data warehouse.

### API usage: Node.js

```js
import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor('automation-lab/maven-central-artifact-dependency-monitor').call({ coordinates: ['org.springframework:spring-core'] });
console.log(run.defaultDatasetId);
```

### API usage: Python

```python
from apify_client import ApifyClient
client = ApifyClient('APIFY_TOKEN')
run = client.actor('automation-lab/maven-central-artifact-dependency-monitor').call(run_input={'coordinates':['org.springframework:spring-core']})
print(run['defaultDatasetId'])
```

### API usage: cURL

```bash
curl -X POST "https://api.apify.com/v2/acts/automation-lab~maven-central-artifact-dependency-monitor/runs?token=$APIFY_TOKEN" -H 'content-type: application/json' -d '{"coordinates":["org.springframework:spring-core"]}'
```

### MCP

In Claude Code or Claude Desktop, add this actor through Apify MCP: `https://mcp.apify.com/?tools=automation-lab/maven-central-artifact-dependency-monitor`.

```bash
claude mcp add apify --transport http https://mcp.apify.com/?tools=automation-lab/maven-central-artifact-dependency-monitor
```

```json
{"mcpServers":{"apify":{"url":"https://mcp.apify.com/?tools=automation-lab/maven-central-artifact-dependency-monitor"}}}
```

Example prompt: “Monitor Spring Core and Apache Commons Lang releases and return their declared Maven dependencies.”

### Reliability notes

The actor calls the public Maven Central Solr API and the latest published POM. A missing POM does not fail the complete run; the row reports `dependencyStatus: not_found`.

### Limits

Each run is capped at 100 artifacts and 100 history versions per artifact. Keep initial runs small and schedule focused coordinates for predictable results.

### Legality and responsible use

Maven Central metadata and POMs are public. You are responsible for complying with Maven Central terms, package licenses, and your organization's data policies.

### Troubleshooting

#### Why is `dependencyStatus` `not_found`?

Some artifacts do not expose a latest POM at the expected public Maven repository path. Metadata is still returned.

#### Why is a dependency version missing?

The published POM may inherit a version from parent or dependency management. This actor preserves the declaration rather than guessing a resolved version.

### FAQ

#### Does it resolve transitive dependencies?

No. It reports dependencies declared directly in the latest POM.

#### Does it need a Maven repository token?

No. The MVP uses public Maven Central endpoints only.

### Related scrapers

Pair this actor with [NPM Package Intelligence Scraper](https://apify.com/automation-lab/npm-package-intelligence-scraper) for cross-ecosystem package inventory.

### Examples

#### Spring release watch

Run one coordinate daily. Store the returned `latestVersion` and alert only when it differs from the previous result.

#### Library portfolio inventory

Submit a curated coordinate list with `maxArtifacts` equal to its length. Export the typed rows to your dependency catalog.

#### Search review

Use a narrow group query first, inspect the output, and then save exact coordinates for repeatable scheduled monitoring.

### Data quality

Maven Central's index determines the metadata and latest version. POM dependency extraction is deliberately transparent: the actor returns direct declarations and reports whether the POM was fetched.

### Security workflow

Use this actor as an inventory input, not as a vulnerability verdict. Join the coordinate and version with your approved vulnerability source before making remediation decisions.

### Change detection tips

- Persist the previous dataset.
- Compare `latestVersion` first.
- Compare dependency arrays by group ID and artifact ID.
- Treat a failed POM fetch as a retryable observation.

### Performance tips

Exact coordinates are the fastest and most predictable input. Search queries can match many artifacts, so set a practical output cap.

### Privacy

Inputs contain public package identifiers and queries. Do not place private repository credentials or internal source code in this actor input.

### Maintenance

Maven Central endpoint behavior can evolve. The actor keeps external URLs in each record so a downstream review can trace public-source values.

### Support

Provide the coordinate or query and the run ID when reporting a problem.

# Actor input Schema

## `coordinates` (type: `array`):

One groupId:artifactId per entry, for example org.springframework:spring-core.

## `solrQueries` (type: `array`):

Optional Maven Central query syntax, such as g:"org.apache.commons". Results are capped by Maximum artifacts.

## `artifactUrls` (type: `array`):

Optional URLs copied from search.maven.org/artifact pages or Maven repository POM URLs.

## `maxArtifacts` (type: `integer`):

Maximum unique artifact records to return. Keep low for an inexpensive first run.

## `includeDependencies` (type: `boolean`):

Fetch each latest-version POM and parse declared dependencies, scopes, versions, and optional flags.

## `versionHistoryLimit` (type: `integer`):

Newest Maven Central versions to include per artifact.

## Actor input object example

```json
{
  "coordinates": [
    "org.springframework:spring-core"
  ],
  "maxArtifacts": 1,
  "includeDependencies": true,
  "versionHistoryLimit": 20
}
```

# Actor output Schema

## `overview` (type: `string`):

No description

# 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 = {
    "coordinates": [
        "org.springframework:spring-core"
    ],
    "maxArtifacts": 1,
    "includeDependencies": true,
    "versionHistoryLimit": 20
};

// Run the Actor and wait for it to finish
const run = await client.actor("automation-lab/maven-central-artifact-dependency-monitor").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 = {
    "coordinates": ["org.springframework:spring-core"],
    "maxArtifacts": 1,
    "includeDependencies": True,
    "versionHistoryLimit": 20,
}

# Run the Actor and wait for it to finish
run = client.actor("automation-lab/maven-central-artifact-dependency-monitor").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 '{
  "coordinates": [
    "org.springframework:spring-core"
  ],
  "maxArtifacts": 1,
  "includeDependencies": true,
  "versionHistoryLimit": 20
}' |
apify call automation-lab/maven-central-artifact-dependency-monitor --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=automation-lab/maven-central-artifact-dependency-monitor",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Maven Central Artifact & Dependency Monitor",
        "description": "Monitor Maven Central coordinates, artifact searches, and POM dependencies for release tracking and Java dependency inventory.",
        "version": "0.1",
        "x-build-id": "Li9RpvJNL4T8To0HD"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/automation-lab~maven-central-artifact-dependency-monitor/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-automation-lab-maven-central-artifact-dependency-monitor",
                "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/automation-lab~maven-central-artifact-dependency-monitor/runs": {
            "post": {
                "operationId": "runs-sync-automation-lab-maven-central-artifact-dependency-monitor",
                "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/automation-lab~maven-central-artifact-dependency-monitor/run-sync": {
            "post": {
                "operationId": "run-sync-automation-lab-maven-central-artifact-dependency-monitor",
                "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",
                "properties": {
                    "coordinates": {
                        "title": "📦 Maven coordinates",
                        "type": "array",
                        "description": "One groupId:artifactId per entry, for example org.springframework:spring-core.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "solrQueries": {
                        "title": "🔎 Maven Central Solr queries",
                        "type": "array",
                        "description": "Optional Maven Central query syntax, such as g:\"org.apache.commons\". Results are capped by Maximum artifacts.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "artifactUrls": {
                        "title": "🔗 Maven Central artifact URLs",
                        "type": "array",
                        "description": "Optional URLs copied from search.maven.org/artifact pages or Maven repository POM URLs.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "maxArtifacts": {
                        "title": "Maximum artifacts",
                        "minimum": 1,
                        "maximum": 100,
                        "type": "integer",
                        "description": "Maximum unique artifact records to return. Keep low for an inexpensive first run.",
                        "default": 10
                    },
                    "includeDependencies": {
                        "title": "Include POM dependencies",
                        "type": "boolean",
                        "description": "Fetch each latest-version POM and parse declared dependencies, scopes, versions, and optional flags.",
                        "default": true
                    },
                    "versionHistoryLimit": {
                        "title": "Version history limit",
                        "minimum": 1,
                        "maximum": 100,
                        "type": "integer",
                        "description": "Newest Maven Central versions to include per artifact.",
                        "default": 20
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
