7 days free, live today on a shared address. Plans from £3.99 a month, own domains from £14 a year. →
HomeHow it worksFeaturesPricingCompareGuides Sign in

Get started

Quickstart

A key, a first call, and your numbers in a terminal in under five minutes.

#1. Make a key

Sign in and open Dashboard, then API. Give the key a name that says what it is for, so you know which one to revoke later. The key is shown once. Copy it somewhere safe; we keep only a hash and cannot show it again.

Keys come with Pro and Agency. Every other plan reads its numbers in the dashboard.

#2. Make the first call

Every request carries the key as a bearer token.

curl https://peekin.bio/api/v1/stats \
  -H "Authorization: Bearer pk_live_YOUR_KEY"

You get JSON back: one entry per page, this window against the previous one.

{
  "window": "7d",
  "generated": "2026-09-03T18:00:00.000Z",
  "pages": [{
    "page": "yourname.link",
    "slug": "yourname",
    "name": "Your Name",
    "now":      { "landed": 312, "tapped": 61, "crossed": 2, "social": 140 },
    "previous": { "landed": 280, "tapped": 49, "crossed": 1, "social": 131 },
    "countries": [{ "country": "US", "people": 120 }, { "country": "GB", "people": 88 }],
    "links": [{ "label": "Members area", "kind": "paid", "taps": 61, "people": 58 }]
  }]
}

#3. Read it

  • landed is people who arrived on the page.
  • tapped is people who tapped the paid link. Divide by landed and you have your rate, the number that matters.
  • crossed is people who passed the 18+ check, if your page has one.
  • social is people who tapped a social link instead of the paid one.

All four count people, not taps. One person tapping twice is one. days can be 7, 28 or 90.

#In other languages

const r = await fetch('https://peekin.bio/api/v1/stats?days=28', {
  headers: { Authorization: 'Bearer pk_live_YOUR_KEY' }
});
const { pages } = await r.json();
for (const p of pages) {
  console.log(p.name, (100 * p.now.tapped / Math.max(1, p.now.landed)).toFixed(1) + '%');
}
import requests

r = requests.get('https://peekin.bio/api/v1/stats', params={'days': 28},
                 headers={'Authorization': 'Bearer pk_live_YOUR_KEY'})
r.raise_for_status()
for p in r.json()['pages']:
    rate = 100 * p['now']['tapped'] / max(1, p['now']['landed'])
    print(p['name'], f"{rate:.1f}%")