LLM Provider Price and Latency Monitor avatar

LLM Provider Price and Latency Monitor

Pricing

Pay per usage

Go to Apify Store
LLM Provider Price and Latency Monitor

LLM Provider Price and Latency Monitor

Normalize model pricing, context length, capabilities, and provider routing data for LLM gateways, AI builders, and FinOps teams.

Pricing

Pay per usage

Rating

0.0

(0)

Developer

George Kioko

George Kioko

Maintained by Community

Actor stats

0

Bookmarked

1

Total users

1

Monthly active users

4 days ago

Last modified

Share

Pricing across 200+ LLMs changes weekly. Tracking it by hand stopped scaling at the 3rd FinOps spreadsheet.

This actor turns public model data into a normalized JSON feed for AI builders, LLM gateways, agent platforms, model marketplaces, and finance teams that need repeatable pricing and capability snapshots. OpenRouter is the primary source because its public models API exposes canonical model IDs, pricing, context length, architecture, supported parameters, and provider routing data. Direct provider pages are used only as limited fallbacks when OpenRouter does not have a model.

The actor runs in Apify Standby mode, so it can be called like a small API. It also supports batch input for scheduled snapshots.

Quick Start

Filter models that support tool calling:

curl "https://api.apify.com/v2/acts/YOUR_ACTOR_ID/runs?token=YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{"mode":"models","capability":"tools","provider":"anthropic","limit":5}'

Benchmark a family for chat routing:

$curl "https://YOUR_STANDBY_URL/benchmark?model_family=claude-3&task=chat&limit=2"

Standby Endpoints

EndpointPurposeBilling
GET /Service info and endpoint listFree
GET /healthReadiness and service infoFree
GET /modelsFilter model snapshots by provider, capability, price, context, and limitmodel-snapshot per row
GET /model?id=Return one full model profile with provider routingsmodel-snapshot once
GET /benchmarkCompare provider routes for a model family and taskbenchmark-row per row
GET /pricing-changeReturn current v1 pricing history statusFree in v1
POST /watchlistEnrich up to 50 requested model IDsmodel-snapshot per returned model

All endpoints honor health check values such as ping, test, example.com, and URL forms like https://example.com/status. These short circuit to a mocked LLM shaped response and do not charge.

Model Snapshot Schema

FieldTypeNotes
model_idstringCanonical OpenRouter slug when available
namestringDisplay name
provider_orgstringSource organization such as anthropic, openai, meta, or mistral
providers_servingstring arrayRoutes serving the model, including OpenRouter and endpoint provider tags
pricing_per_1m_tokensobjectPrompt, completion, image input, and flat request prices
context_lengthnumberToken context window
max_output_tokensnumber or nullAdvertised max completion tokens
supports_visionbooleanBased on model architecture input modalities
supports_toolsbooleanBased on tools or tool_choice support
supports_json_modebooleanBased on response_format or structured_outputs support
modalitystringtext, multimodal, image, or audio
sourcestringCurrent primary source is openrouter
fetched_atISO dateSnapshot time

Benchmark Row Schema

FieldTypeNotes
benchmark_idstringStable hash of family, task, model, and providers
model_familystringFamily requested, such as claude-3
taskstringchat, vision, tools, or json
providersobject arrayProvider, model ID, token pricing, context, and chat pair cost
cheapest_providerstringLowest cost route for a 500 prompt plus 500 completion pair
fastest_advertised_providerstring or nullUses OpenRouter endpoint latency when present
best_context_providerstringRoute with the largest context window
cheapest_vs_most_expensive_multipliernumberMost expensive route divided by cheapest route

The total_per_1k_chat_pair_usd metric assumes 500 prompt tokens and 500 completion tokens. It is a simple apples to apples price for one common chat exchange.

Pipeline

flowchart LR
A[Input or Standby request] --> B[OpenRouter models API]
A --> C[Limited direct provider fetchers]
B --> D[Normalize model schema]
C --> D
D --> E{Benchmark requested}
E -->|yes| F[Provider route aggregation]
E -->|no| G[Model snapshots]
F --> H[Dataset and JSON response]
G --> H

Pricing

EventPriceCharged when
actor-start$0.50Once per paid Standby request or batch run
model-snapshot$0.025Per enriched model profile returned
benchmark-row$0.15Per model family comparison row returned

Charges fire only after real work succeeds. Health checks and empty not found responses are not billed.

Comparison

OptionBest forGap
OpenRouter (aggregator UI, not an ingestion API)Browsing and routing through OpenRouterTeams still need normalized export, filtering, and Apify scheduling
Internal FinOps spreadsheetsManual reviews and finance notesSlow updates, inconsistent capability fields, and weak automation
This actor (the normalized feed)JSON snapshots, model admission checks, and recurring cost reviewsv1 has current snapshots only, not historical deltas

Use Cases

  1. LLM gateway routing decisions by price, context, and capability.
  2. AI agent platform model admission checks before enabling a new model.
  3. FinOps cost per task budgeting for weekly model spend reviews.
  4. AI engineering team weekly digest of price and capability changes.
  5. Third party model marketplace listing data.

FAQ

How often should I run it? Weekly is enough for most teams. Daily is useful when you expose model choice to paying customers.

How accurate is capability detection? It follows OpenRouter fields. Vision uses architecture modality and input modalities. Tool and JSON support use advertised supported parameters.

Can provider data lag? Yes. OpenRouter is the primary normalized source, and direct provider pages are only fallback checks. Treat the feed as operational data, not a contract.

Does v1 include historical pricing? Not yet. /pricing-change returns a clear no history response. Schedule this actor and store snapshots if you need history today.

Can I get a refund for bad source data? Contact the actor owner with the run ID and affected model IDs. Refunds are reviewed case by case.

How do I request coverage changes? Send the model ID, provider URL, and desired field to the actor owner through Apify.