Free to Use

The Free Ably Alternative for Realtime WebSockets

Realtime WebSocket channels, presence, and pub/sub — without enterprise pricing.

Get WebSocket channels, presence, pub/sub, and webhooks without enterprise pricing. Apinator is free to use — no per-message metering, no peak-connection charges, no channel-minute billing. Start free, no credit card.

No Per-Message Metering

Ably meters every message, every peak connection, and every channel-minute. Apinator does none of that — you send as many events as you need, free.

Free to Use

No credit card, no trial, no paid plan above it. Presence, private channels, webhooks, and HMAC auth are all included, not gated.

Comparable Features

WebSocket channels, presence tracking, HMAC auth, webhook delivery, and multi-region — without Ably's enterprise tier.

Predictable — $0/month

A bill that never changes, because it never starts. No surprise invoices from a viral launch or a traffic spike.

Multi-Region (EU + US)

Pick a region per app so connections stay close to your users and sensitive data stays in its jurisdiction.

HMAC Token Auth

Private channels use HMAC-signed tokens the same way Ably does. Your existing server-side auth pattern maps directly across.

Apinator vs Ably

FeatureApinatorAbly
Pricing modelFreePer-message + peak connection + channel-minutes
Free-tier messages / month15M (500k/day)6M
Free-tier peak connections500200
Pub/sub
Presence
Webhooks (integrations)
HMAC auth
Multi-regionPaid tiers
Predictable monthly billFree — $0/mo

Quick Start

Connect, subscribe to a channel, and bind event handlers — similar to Ably, fully managed.

client.js
import { RealtimeClient } from '@apinator/client' const client = new RealtimeClient('APP_KEY', { host: 'wss://rt.apinator.io' }) // Subscribe to a channel and bind an event const channel = client.subscribe('notifications') channel.bind('alert', (data) => { showNotification(data.title, data.body) }) // Publish from your server (Node.js, Python, Go, PHP, ...) import { ApinatorServer } from '@apinator/server' const apinator = new ApinatorServer({ appId, key, secret }) await apinator.trigger('notifications', 'alert', { title: 'New order', body: '#1042' })

Frequently Asked Questions

Ready to get started?

Completely free, no credit card required. Deploy in minutes.