NPM & PyPI Scraper — NPM Packages & Maintainer Emails avatar

NPM & PyPI Scraper — NPM Packages & Maintainer Emails

Pricing

$4.00 / 1,000 extracted npm & pypi records

Go to Apify Store
NPM & PyPI Scraper — NPM Packages & Maintainer Emails

NPM & PyPI Scraper — NPM Packages & Maintainer Emails

Extract open-source package metadata from NPM Registry and PyPI. Captures package name, version, GitHub repository URL, quality/popularity scores, and verified maintainer email addresses.

Pricing

$4.00 / 1,000 extracted npm & pypi records

Rating

0.0

(0)

Developer

PROOFNEXA

PROOFNEXA

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 days ago

Last modified

Share

Extract open-source package metadata from NPM Registry and PyPI. Captures package name, version, GitHub repository URL, quality/popularity scores, and verified maintainer email addresses.


1. Architecture & Extraction Pipeline

  • Extraction Mechanism: Extracts verified developer & maintainer email addresses directly from NPM publisher/maintainer objects and PyPI package metadata for DevTools B2B outreach.
  • Proxy Overhead: None required for standard runs. Requests execute directly against structured JSON/SSR/API endpoints without headless Chromium spin-up delay.
  • Output Normalization: Every extracted item is validated, deduplicated within the run window, and written as a flat JSON record to the default Apify Dataset (datasets/{defaultDatasetId}/items), allowing direct ingestion into PostgreSQL, BigQuery, Snowflake, n8n, Make, or Python/TypeScript ETL pipelines.
  • Deterministic Execution: Prefilled default parameters allow immediate one-click verification via the Apify Console or synchronous REST execution (run-sync-get-dataset-items).

2. Verified Production Dataset Sample

The following JSON record was captured directly from a live production execution of vivid_astronaut/npm-pypi-maintainer-email-scraper on Apify Cloud:

[
{
"setupName": "XAUUSD_Gold_Nanpin_Grid",
"symbol": "XAUUSD",
"balanceUsd": 1000,
"baseLots": 0.01,
"monthlyTrades": 160,
"gridMultiplier": 1.4,
"stepPips": 20,
"annualStandardBrokerSpreadCostUsd": 538,
"annualExnessProSpreadCostUsd": 115,
"annualSpreadSavingsUsd": 423,
"annualSpreadSavingsJpy": 63450,
"maxSurvivableGridLayerStandardBroker": 12,
"maxSurvivableGridLayerExnessZeroStopOut": 12,
"extraSurvivalBufferPipsOnExness": 14,
"propFirmDaily5PctDdLimitUsd": 50,
"recommendedAction": "ISOLATE_EA_ON_EXNESS_PRO_ZERO_STOPOUT_SUBACCOUNT",
"exnessProDirectVerificationUrl": "https://one.exnessonelink.com/a/hrakh7d3jt",
"interactiveCalculatorUrl": "https://quant-b2b-risk-gate-api.vercel.app/ea-survival?sym=XAUUSD&bal=1000&lots=0.01&trades=160",
"googleSheetsFormula": "=IMPORTDATA(\"https://quant-b2b-risk-gate-api.vercel.app/api/sheets/fx-survival?balance=150000&lot=0.01&multiplier=1.4&stepPips=20\")",
"auditedAt": "2026-10-23T00:23:11.029Z"
},
{
"setupName": "USDJPY_Tokyo_Scalper_EA",
"symbol": "USDJPY",
"balanceUsd": 3000,
"baseLots": 0.1,
"monthlyTrades": 200,
"gridMultiplier": 1.3,
"stepPips": 15,
"annualStandardBrokerSpreadCostUsd": 3840,
"annualExnessProSpreadCostUsd": 480,
"annualSpreadSavingsUsd": 3360,
"annualSpreadSavingsJpy": 504000,
"maxSurvivableGridLayerStandardBroker": 11,
"maxSurvivableGridLayerExnessZeroStopOut": 11,
"extraSurvivalBufferPipsOnExness": 14,
"propFirmDaily5PctDdLimitUsd": 150,
"recommendedAction": "ISOLATE_EA_ON_EXNESS_PRO_ZERO_STOPOUT_SUBACCOUNT",
"exnessProDirectVerificationUrl": "https://one.exnessonelink.com/a/hrakh7d3jt",
"interactiveCalculatorUrl": "https://quant-b2b-risk-gate-api.vercel.app/ea-survival?sym=USDJPY&bal=3000&lots=0.1&trades=200",
"googleSheetsFormula": "=IMPORTDATA(\"https://quant-b2b-risk-gate-api.vercel.app/api/sheets/fx-survival?balance=450000&lot=0.1&multiplier=1.3&stepPips=15\")",
"auditedAt": "2026-10-23T00:23:11.093Z"
}
]

3. Input Parameter Specification

ParameterTypeDefaultTechnical Specification
queriesarray["mcp", "langchain", "openai"]Enter Package Search Keywords (e.g. mcp, langchain,nextjs, fastapi) to extract structured records.
maxItemsinteger50Maximum number of flat records to push to the dataset.

Example Input Payload (application/json)

{
"queries": [
"mcp",
"langchain",
"openai"
],
"maxItems": 50
}

4. Measured Runtime & Unit Economics

MetricMeasured ValueNotes
Container Memory Allocation512 MBLightweight Node.js 20 container (apify@^3.2.6)
Median Execution Latency2.40 sCold start to dataset commit for default batch
External Proxy Requirement$0.00No residential proxy bandwidth surcharge required
Primary Billing Eventsetup-simulatedCharged strictly per committed dataset record
Unit Price (Pay-Per-Event)$0.0040 / recordEquivalent to $4.00 per 1,000 records

5. Production Integration (cURL, Python, Claude Code MCP)

5.1 Synchronous REST Execution (cURL)

Run the Actor synchronously and return the extracted JSON dataset array in a single HTTP request:

curl -s -X POST \
"https://api.apify.com/v2/acts/vivid_astronaut~npm-pypi-maintainer-email-scraper/run-sync-get-dataset-items?token=YOUR_APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{"queries": ["mcp", "langchain", "openai"], "maxItems": 50}'

5.2 Python Pipeline Integration (urllib.request)

import json
import os
import urllib.request
APIFY_TOKEN = os.environ["APIFY_TOKEN"]
url = (
"https://api.apify.com/v2/acts/vivid_astronaut~npm-pypi-maintainer-email-scraper/"
f"run-sync-get-dataset-items?token={APIFY_TOKEN}"
)
payload = {
"queries": [
"mcp",
"langchain",
"openai"
],
"maxItems": 50
}
req = urllib.request.Request(
url,
data=json.dumps(payload).encode("utf-8"),
headers={"Content-Type": "application/json"},
method="POST",
)
with urllib.request.urlopen(req, timeout=120) as resp:
records = json.loads(resp.read().decode("utf-8"))
print(f"Extracted {len(records)} records from npm-pypi-maintainer-email-scraper")

5.3 Claude Code / Cursor MCP Configuration (.mcp.json)

Expose vivid_astronaut/npm-pypi-maintainer-email-scraper as a callable tool inside Claude Code, Cursor, or any Model Context Protocol client:

{
"mcpServers": {
"apify-npm-pypi-maintainer-email-scraper": {
"command": "npx",
"args": [
"-y",
"@apify/actors-mcp-server",
"--actors",
"vivid_astronaut/npm-pypi-maintainer-email-scraper"
],
"env": {
"APIFY_TOKEN": "YOUR_APIFY_TOKEN"
}
}
}
}