AI API Pricing & Model Lifecycle Report
Pricing
from $10.00 / 1,000 ai model price rows
AI API Pricing & Model Lifecycle Report
Compare and watch official public pricing, model, deprecation, and release-note pages for OpenAI, Anthropic, and Gemini without API keys or model calls.
Pricing
from $10.00 / 1,000 ai model price rows
Rating
0.0
(0)
Developer
naoki anzai
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
2 hours ago
Last modified
Categories
Share
This Apify Actor compares and watches official public pricing, model, deprecation, and release-note pages for three v1 providers: OpenAI, Anthropic, and Gemini.
It does not accept API keys, call model endpoints, send prompts, or use provider APIs. It emits source-linked normalized observations and arithmetic monthly token-cost scenarios from the usageProfiles input.
Quickstart
Use initialRunMode: "baseline_only" for the first scheduled run. A complete source bundle is stored and the run emits zero rows and zero charges. The next run can use mode: "watch" with the same input. With emitUnchanged: false, an identical source snapshot emits zero rows and zero charges.
{"providers": ["openai", "anthropic", "gemini"],"models": ["openai:gpt-4o", "anthropic:claude-sonnet-4-20250514", "gemini:gemini-2.5-flash"],"usageProfiles": [{"name": "standard-month","inputUnits": 1000000,"outputUnits": 250000,"cacheUnits": 100000}],"mode": "compare","initialRunMode": "emit_current","generateReport": true,"emitRawRows": true,"emitUnchanged": false,"maxChargeUsd": 12,"dryRun": false}
dryRun: true uses deterministic local sample rows and never fetches a page or charges PPE. The fixture-backed parsers used by the test suite live under fixtures/.
Output Rows
The shared deploy integration expects these exact rowType values:
ai_model_price_row: one normalized model pricing record whenemitRawRowsis enabled.ai_model_lifecycle_alert: an official deprecation or shutdown observation.ai_api_cost_comparison_report: an aggregate report withproviderCount,scenarioCount,sourceUrl, and an explicitcomparisonStatus; rows with unpriced cache units setmonthlyCostUsdtonulland are not rankable.ai_model_migration_report: emitted only when an official source explicitly names a replacement; it containsprovider,modelId,replacementModelId, andsourceUrl.ai_pricing_export: an export handoff emitted with raw model rows.
Every row has a stable identity, provider, source URL, normalized model fields, retrieval time, limitations, and prohibited interpretations. No recommendation or inferred replacement field is emitted.
Inputs
providers:openai,anthropic, and/orgeminionly.models: optional exact IDs,provider:modelIdselectors, or*/?wildcard selectors.filters: status, modality, context-window, deprecation, and model ID filters.usageProfiles: monthlyinputUnits,outputUnits, andcacheUnits; optional cache read/write splits are supported, and an omitted cache quantity means zero.mode:compareorwatch.initialRunMode:baseline_onlyoremit_current.generateReport,emitRawRows,emitUnchanged,maxChargeUsd, anddryRuncontrol delivery and billing.
PPE Pricing
There is no start charge. Only rows actually delivered through configured PPE events are billable:
| Event | Row type | Price |
|---|---|---|
ai-model-price-row | ai_model_price_row | $0.01 |
ai-model-lifecycle-alert | ai_model_lifecycle_alert | $0.25 |
ai-api-cost-comparison-report | ai_api_cost_comparison_report | $3.00 |
ai-model-migration-report | ai_model_migration_report | $5.00 |
ai-pricing-export | ai_pricing_export | $2.00 |
The delivery layer validates the complete row batch before the first push, rejects unknown event names or mismatched row types, and refuses to deliver an Apify runtime row unless the provider returns chargedCount >= 1. maxChargeUsd is an all-or-nothing pre-delivery budget.
Source and Safety Boundaries
Only hard-coded official provider source manifests are accepted. The pricing, models, and dedicated lifecycle pages are required; release notes are optional corroborating evidence and never override a dedicated lifecycle page. The web guard checks public network targets, robots policy, response size, timeout, redirect count, and actual access-challenge markers. Normal navigation text such as Sign in or Contact sales is not itself a challenge. Structural truncation, declared-count undercoverage, partial markers, blocked pages, and non-USD pricing fail closed. A rejected bundle is skipped, its prior provider and model state is not overwritten, and no row is charged for it.
Lifecycle statuses are copied only from explicit lifecycle evidence. No shutdown date announced does not create a shutdown, and a model removed from a complete catalog is reported as absent rather than silently reclassified. A later catalog reappearance is emitted as a separate lifecycle change.
dryRun rows use sourceMethod: "local_deterministic_fixture" and sourceProvenance: "not_fetched_local_fixture"; their official URLs are references only and were not fetched.
Read docs/source-compliance.md, docs/integration-guide.md, and docs/store-competitive-snapshot.md for operational details.
Local Tests
$npm test
The suite uses only local fixtures and covers adapters, normalization, cost arithmetic, baseline/watch state, partial-source fail-closed behavior, robots and access challenges, exact row types, budget enforcement, and PPE charge capture.