AI API Pricing & Model Lifecycle Report avatar

AI API Pricing & Model Lifecycle Report

Pricing

from $10.00 / 1,000 ai model price rows

Go to Apify Store
AI API Pricing & Model Lifecycle Report

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

naoki anzai

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 hours ago

Last modified

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 when emitRawRows is enabled.
  • ai_model_lifecycle_alert: an official deprecation or shutdown observation.
  • ai_api_cost_comparison_report: an aggregate report with providerCount, scenarioCount, sourceUrl, and an explicit comparisonStatus; rows with unpriced cache units set monthlyCostUsd to null and are not rankable.
  • ai_model_migration_report: emitted only when an official source explicitly names a replacement; it contains provider, modelId, replacementModelId, and sourceUrl.
  • 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/or gemini only.
  • models: optional exact IDs, provider:modelId selectors, or */? wildcard selectors.
  • filters: status, modality, context-window, deprecation, and model ID filters.
  • usageProfiles: monthly inputUnits, outputUnits, and cacheUnits; optional cache read/write splits are supported, and an omitted cache quantity means zero.
  • mode: compare or watch.
  • initialRunMode: baseline_only or emit_current.
  • generateReport, emitRawRows, emitUnchanged, maxChargeUsd, and dryRun control delivery and billing.

PPE Pricing

There is no start charge. Only rows actually delivered through configured PPE events are billable:

EventRow typePrice
ai-model-price-rowai_model_price_row$0.01
ai-model-lifecycle-alertai_model_lifecycle_alert$0.25
ai-api-cost-comparison-reportai_api_cost_comparison_report$3.00
ai-model-migration-reportai_model_migration_report$5.00
ai-pricing-exportai_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.