Axiom is the observability platform with zero-config log ingestion, real-time querying, and a generous free tier. Think Datadog, but affordable.
What Is Axiom?
Axiom stores and queries your logs, traces, and events. Unlike Datadog or Splunk, Axiom does not charge per GB ingested on the free tier — you get 500 GB/month free.
Quick Start
export AXIOM_TOKEN="your-api-token"
export AXIOM_ORG="your-org"
Ingest Events
# Send events to a dataset
curl -s -X POST 'https://api.axiom.co/v1/datasets/my-logs/ingest' \
-H "Authorization: Bearer $AXIOM_TOKEN" \
-H 'Content-Type: application/json' \
-d '[{"level": "info", "message": "User logged in", "userId": "user-123", "_time": "2026-03-30T10:00:00Z"}, {"level": "error", "message": "Payment failed", "userId": "user-456", "error": "card_declined", "_time": "2026-03-30T10:01:00Z"}]'
Query with APL
# Axiom Processing Language (like KQL)
curl -s -X POST 'https://api.axiom.co/v1/datasets/_apl?format=legacy' \
-H "Authorization: Bearer $AXIOM_TOKEN" \
-H 'Content-Type: application/json' \
-d '{"apl": "[\"my-logs\"] | where level == \"error\" | summarize count() by bin(_time, 1h)", "startTime": "2026-03-29T00:00:00Z", "endTime": "2026-03-30T23:59:59Z"}'
TypeScript SDK
import { Axiom } from '@axiomhq/js'
const axiom = new Axiom({ token: process.env.AXIOM_TOKEN! })
// Ingest
await axiom.ingest('api-logs', [
{ level: 'info', endpoint: '/api/users', latency: 45, status: 200 },
{ level: 'warn', endpoint: '/api/orders', latency: 2100, status: 200 },
])
await axiom.flush()
// Query
const result = await axiom.query(
`['api-logs'] | where latency > 1000 | project endpoint, latency | order by latency desc | take 10`,
{ startTime: '2026-03-29T00:00:00Z', endTime: '2026-03-30T23:59:59Z' }
)
console.log(result.tables[0].events)
Next.js Integration
// app/api/route.ts
import { withAxiom, AxiomRequest } from 'next-axiom'
export const GET = withAxiom(async (req: AxiomRequest) => {
req.log.info('API called', { path: '/api/data' })
try {
const data = await fetchData()
req.log.info('Data fetched', { count: data.length })
return Response.json(data)
} catch (error) {
req.log.error('Failed to fetch data', { error: error.message })
return Response.json({ error: 'Internal error' }, { status: 500 })
}
})
Free Tier
| Feature | Free | Pro ($25/mo) |
|---|---|---|
| Ingest | 500 GB/mo | 2 TB/mo |
| Query | Unlimited | Unlimited |
| Retention | 30 days | 60 days |
| Datasets | 10 | Unlimited |
| Users | 2 | 10 |
Axiom vs Alternatives
| Feature | Axiom | Datadog | Grafana Cloud |
|---|---|---|---|
| Free ingest | 500 GB | 0 | 50 GB |
| Query language | APL | Custom | LogQL |
| Setup | Zero-config | Agent-based | Agent-based |
| Pricing model | Per GB stored | Per GB ingested | Per GB |
Need to monitor scraping pipelines? Scrapfly + Axiom = full observability for web data extraction. Email spinov001@gmail.com for custom monitoring.
Top comments (0)