📜 Open-Source License & Dependency Audit API avatar

📜 Open-Source License & Dependency Audit API

Pricing

from $8.00 / 1,000 results

Go to Apify Store
📜 Open-Source License & Dependency Audit API

📜 Open-Source License & Dependency Audit API

Audit npm packages for license risk, dependency depth, maintainer activity, and compliance posture. One clean summary row per package — no brittle scraping, just stable registry metadata. Perfect for legal/compliance teams, engineering leads, and procurement workflows.

Pricing

from $8.00 / 1,000 results

Rating

0.0

(0)

Developer

太郎 山田

太郎 山田

Maintained by Community

Actor stats

0

Bookmarked

1

Total users

0

Monthly active users

11 hours ago

Last modified

Share

Audit npm packages for license risk, dependency depth, maintainer activity, and compliance posture. One clean summary row per package — no brittle scraping, just stable registry metadata. Perfect for legal/compliance teams, engineering leads, and procurement workflows.

Store Quickstart

Run this actor with your target input. Results appear in the Apify Dataset and can be piped to webhooks for real-time delivery. Use dryRun to validate before committing to a schedule.

Key Features

  • License classification — Categorize as permissive, weak-copyleft, strong-copyleft, or unknown
  • Configurable policypermissive (strict), copyleft-ok (tolerant), or custom allow/deny lists
  • Transitive dependency crawl — Audit nested deps up to 3 levels deep
  • Risk scoring — 0-100 score with A-F grades per package
  • Maintainer signals — Maintainer count, last publish date, deprecation status
  • Summary-first — One row per package with aggregate transitive risk

Use Cases

WhoWhy
DevelopersAutomate recurring data fetches without building custom scrapers
Data teamsPipe structured output into analytics warehouses
Ops teamsMonitor changes via webhook alerts
Product managersTrack competitor/market signals without engineering time

Input

FieldTypeDefaultDescription
packagesarrayprefillednpm package names to audit (max 200).
licensePolicystring"permissive"Which license policy to apply: 'permissive' flags copyleft licenses as high risk, 'copyleft-ok' treats copyleft as mediu
allowListarray[]SPDX identifiers to treat as approved (only used when licensePolicy=custom).
denyListarray[]SPDX identifiers to treat as denied (only used when licensePolicy=custom).
maxDepthinteger1Maximum transitive dependency depth to crawl (0 = direct only, 1 = one level deep, etc.).
includeDevDepsbooleanfalseAlso audit devDependencies of each package.
concurrencyinteger5Number of parallel requests
timeoutMsinteger15000Request timeout in milliseconds

Input Example

{
"packages": [
"express",
"react",
"lodash",
"axios"
],
"licensePolicy": "permissive",
"allowList": [],
"denyList": [],
"maxDepth": 1,
"includeDevDeps": false,
"concurrency": 5,
"timeoutMs": 15000,
"delivery": "dataset",
"dryRun": false
}

Output

FieldTypeDescription
metaobject
resultsarray
results[].packagestring
results[].versionstring
results[].licensestring
results[].licenseFamilystring
results[].riskLevelstring
results[].descriptionstring
results[].authornull
results[].homepagestring (url)
results[].repositorystring (url)
results[].maintainerCountnumber
results[].lastPublishtimestamp
results[].daysSincePublishnumber
results[].deprecatednull
results[].directDepsnumber
results[].devDepsnumber
results[].transitiveDepsnumber
results[].transitiveRiskSummaryobject
results[].scoreobject
results[].auditedAttimestamp
results[].errornull

Output Example

{
"meta": {
"generatedAt": "2026-06-15T12:00:00.000Z",
"policy": "permissive",
"maxDepth": 1,
"totals": {
"audited": 3,
"errors": 0,
"highRisk": 0,
"mediumRisk": 0,
"lowRisk": 3,
"gradeA": 2,
"gradeB": 1,
"gradeC": 0,
"gradeD": 0,
"gradeF": 0,
"deprecated": 0
}
},
"results": [
{
"package": "express",
"version": "4.21.0",
"license": "MIT",
"licenseFamily": "permissive",
"riskLevel": "low",
"description": "Fast, unopinionated, minimalist web framework",
"author": null,
"homepage": "http://expressjs.com/",
"repository": "https://github.com/expressjs/express",
"maintainerCount": 4,
"lastPublish": "2024-09-11T00:00:00.000Z",
"daysSincePublish": 45,
"deprecated": null,
"directDeps": 30,
"devDeps": 0,
"transitiveDeps": 48,
"transitiveRiskSummary": {
"total": 48,
"high": 0,

API Usage

Run this actor programmatically using the Apify API. Replace YOUR_API_TOKEN with your token from Apify Console → Settings → Integrations.

cURL

curl -X POST "https://api.apify.com/v2/acts/taroyamada~open-source-license-dependency-audit/run-sync-get-dataset-items?token=YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{ "packages": [ "express", "react", "lodash", "axios" ], "licensePolicy": "permissive", "allowList": [], "denyList": [], "maxDepth": 1, "includeDevDeps": false, "concurrency": 5, "timeoutMs": 15000, "delivery": "dataset", "dryRun": false }'

Python

from apify_client import ApifyClient
client = ApifyClient("YOUR_API_TOKEN")
run = client.actor("taroyamada/open-source-license-dependency-audit").call(run_input={
"packages": [
"express",
"react",
"lodash",
"axios"
],
"licensePolicy": "permissive",
"allowList": [],
"denyList": [],
"maxDepth": 1,
"includeDevDeps": false,
"concurrency": 5,
"timeoutMs": 15000,
"delivery": "dataset",
"dryRun": false
})
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
print(item)

JavaScript / Node.js

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: 'YOUR_API_TOKEN' });
const run = await client.actor('taroyamada/open-source-license-dependency-audit').call({
"packages": [
"express",
"react",
"lodash",
"axios"
],
"licensePolicy": "permissive",
"allowList": [],
"denyList": [],
"maxDepth": 1,
"includeDevDeps": false,
"concurrency": 5,
"timeoutMs": 15000,
"delivery": "dataset",
"dryRun": false
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);

Tips & Limitations

  • Schedule weekly runs against your production domains to catch config drift.
  • Use webhook delivery to pipe findings into your SIEM (Splunk, Datadog, Elastic).
  • For CI integration, block releases on critical severity findings using exit codes.
  • Combine with ssl-certificate-monitor for layered cert + headers coverage.
  • Findings include links to official remediation docs — share with dev teams via the webhook payload.

FAQ

Is running this against a third-party site legal?

Passive public-header scanning is generally permitted, but follow your own compliance policies. Only scan sites you have authorization for.

How often should I scan?

Weekly for production domains; daily if you have high config-change velocity.

Can I export to a compliance tool?

Use webhook delivery or Dataset API — formats map well to Drata, Vanta, OneTrust import templates.

Is this a penetration test?

No — this actor performs passive compliance scanning only. No exploitation, fuzzing, or auth bypass.

Does this qualify as a SOC2 control?

This actor produces evidence artifacts suitable for SOC2 CC7.1 (continuous monitoring). It is not itself a SOC2 certification.

Security & Compliance cluster — explore related Apify tools:

Cost

Pay Per Event:

  • actor-start: $0.01 (flat fee per run)
  • dataset-item: $0.003 per output item

Example: 1,000 items = $0.01 + (1,000 × $0.003) = $3.01

No subscription required — you only pay for what you use.