# Komi Page API. Send a handle or page link.

Products, discount codes, music, events and links. We handle the proxies, blocks and platform changes.

[Get API key](https://socialtap.dev/signup/?next=%2Fplayground%2F%3Fendpoint%3Dkomi.page)

## Komi Page API at a glance

Returns a public Komi creator page with everything it shows: links, products with prices, discount codes, videos, music, podcasts and events. Music releases and podcast episodes come with their link on each streaming service, and events with their date, venue and ticket link. The page also has its ID, username, display name, bio, avatar, owner's name and its row of social and contact links. Send its link, its host or its username.

GET `/v1/komi/page`

[Read the API reference](https://socialtap.dev/docs/reference/komi/page/index.md)

- **1 credit** per request, $0.75–$1.97 per 1,000 requests
- **19 typed fields** null when unknown
- **`handle`** is all it needs, e.g. `kimkardashian`
- **100 credits** free when you sign up, no card, so you can build before you spend

## Send one request. Get 19 fields back.

Copy the request in your language, or hand it to your agent. Sign up for an API key and your first 100 credits are free.

`$ npm install socialtap`

`handle = kimkardashian`

[Open in playground](https://socialtap.dev/playground/?endpoint=komi.page)

cURL:

```shell
curl -G 'https://socialtap.dev/v1/komi/page' \
  --data-urlencode 'handle=https://hek.komi.io' \
  -H "x-api-key: $SOCIALTAP_API_KEY"
```

TypeScript SDK:

```typescript
import { SocialTap } from "socialtap";

const client = new SocialTap(); // apiKey defaults to process.env.SOCIALTAP_API_KEY

const res = await client.komi.page.get({ handle: "https://hek.komi.io" });
console.log(res.data);
console.log(res.credits.charged, res.meta.request_id);
```

Node.js (fetch):

```javascript
const params = new URLSearchParams({
  handle: "https://hek.komi.io",
});
const res = await fetch(`https://socialtap.dev/v1/komi/page?${params}`, {
  headers: { "x-api-key": process.env.SOCIALTAP_API_KEY ?? "" },
});
const body = await res.json();
if (!res.ok) throw new Error(`${body.error.code}: ${body.error.message}`);
const { data, meta } = body;
console.log(data, meta.credits_charged);
```

Python (requests):

```python
import os

import requests

res = requests.get(
    "https://socialtap.dev/v1/komi/page",
    params={"handle": "https://hek.komi.io"},
    headers={"x-api-key": os.environ["SOCIALTAP_API_KEY"]},
)
body = res.json()
if not res.ok:
    raise RuntimeError(f"{body['error']['code']}: {body['error']['message']}")
data, meta = body["data"], body["meta"]
print(data, meta["credits_charged"])
```

Go (net/http):

```go
package main

import (
	"encoding/json"
	"fmt"
	"log"
	"net/http"
	"net/url"
	"os"
)

func main() {
	q := url.Values{}
	q.Set("handle", "https://hek.komi.io")
	req, err := http.NewRequest("GET", "https://socialtap.dev/v1/komi/page?"+q.Encode(), nil)
	if err != nil {
		log.Fatal(err)
	}
	req.Header.Set("x-api-key", os.Getenv("SOCIALTAP_API_KEY"))
	res, err := http.DefaultClient.Do(req)
	if err != nil {
		log.Fatal(err)
	}
	defer res.Body.Close()
	var body struct {
		Data  json.RawMessage `json:"data"`
		Meta  map[string]any  `json:"meta"`
		Error *struct {
			Code    string `json:"code"`
			Message string `json:"message"`
		} `json:"error"`
	}
	if err := json.NewDecoder(res.Body).Decode(&body); err != nil {
		log.Fatal(err)
	}
	if body.Error != nil {
		log.Fatalf("%s: %s", body.Error.Code, body.Error.Message)
	}
	fmt.Println(string(body.Data), body.Meta["credits_charged"])
}
```

200 OK:

```json
{
  "data": {
    "approximate_fields": [],
    "avatar_url": "https://komi-production-assets.s3-accelerate.amazonaws.com/photos/lDMv-wPUiMipP8yyiam66.jpg?tr=w-782%2Ch-983%2Ccm-extract%2Cx-149%2Cy-45&crp=%7B%22width%22%3A782%2C%22height%22%3A983%2C%22x%22%3A149%2C%22y%22%3A45%7D",
    "banner_url": null,
    "bio": null,
    "category": "Music",
    "country_code": null,
    "created_at": "2024-10-21T14:41:23Z",
    "display_name": "HEKKET",
    "external_links": [
      {
        "title": null,
        "url": "https://instagram.com/hekket17603/profilecard/?igsh=MW1oNWRiODA5dWZuMg=="
      },
      {
        "title": null,
        "url": "https://youtube.com/@hekket?si=-xnVB7PdutNtbgmk"
      },
      {
        "title": "DEAD BXTCH FT N8F",
        "url": "https://on.soundcloud.com/hEQzK"
      }
    ],
    "id": "fea18cd6-5ba9-4f7d-94ea-3d08c7cf31d7",
    "is_private": false,
    "is_verified": null,
    "location": null,
    "metrics": {
      "follower_count": null,
      "following_count": null,
      "post_count": null,
      "total_like_count": null,
      "total_view_count": null
    },
    "platform": "komi",
    "platform_specific": {
      "komi": {
        "display_name_image_url": null,
        "first_name": "HEKKET",
        "items": [
          {
            "coupon_code": null,
            "currency": null,
            "description": null,
            "group": null,
            "id": "ebefa060-2c52-4119-97a4-94f084bce23c",
            "is_sold_out": null,
            "links": [],
            "location": null,
            "price": null,
            "section": "SoundCloud",
            "starts_at": null,
            "thumbnail_url": "https://komi-production-assets.s3-accelerate.amazonaws.com/photos/4QeDwoRB1cv8sG2g47Jde.jpg",
            "title": "DEAD BXTCH FT N8F",
            "type": "link",
            "url": "https://on.soundcloud.com/hEQzK",
            "venue": null
          },
          {
            "coupon_code": null,
            "currency": null,
            "description": null,
            "group": null,
            "id": "92612586-9372-4ee0-9662-caffa7fccd3e",
            "is_sold_out": null,
            "links": [],
            "location": null,
            "price": null,
            "section": "YouTube Videos",
            "starts_at": null,
            "thumbnail_url": "https://i.ytimg.com/vi/aRR9J4af9gY/hqdefault.jpg",
            "title": "HEKKET & OMYSLIM - STRESSIN OUT",
            "type": "youtube_video",
            "url": "https://youtu.be/aRR9J4af9gY?si=vATDxe2tEjbf3gMP",
            "venue": null
          },
          {
            "coupon_code": null,
            "currency": null,
            "description": null,
            "group": null,
            "id": "342924db-5b88-488c-8a9f-26e593af8cf2",
            "is_sold_out": null,
            "links": [],
            "location": null,
            "price": null,
            "section": "YouTube Videos",
            "starts_at": null,
            "thumbnail_url": "https://i.ytimg.com/vi/SFzYp5P0U6k/hqdefault.jpg",
            "title": "HEKKET - DEAD BXTCH (feat N8F & Prod By DELIXE)",
            "type": "youtube_video",
            "url": "https://youtu.be/SFzYp5P0U6k?si=qNgExztHYFqS06Iw",
            "venue": null
          }
        ],
        "last_name": null,
        "social_links": [
          {
            "type": "instagram",
            "url": "https://instagram.com/hekket17603/profilecard/?igsh=MW1oNWRiODA5dWZuMg=="
          },
          {
            "type": "youtube",
            "url": "https://youtube.com/@hekket?si=-xnVB7PdutNtbgmk"
          }
        ]
      }
    },
    "type": "unknown",
    "unknown_fields": [],
    "url": "https://hek.komi.io",
    "username": "hek"
  },
  "meta": {
    "request_id": "req_3f9c2a7d1e8b4c6a9f0e2d4b6a8c0e1f",
    "platform": "komi",
    "source": "api",
    "is_cached": false,
    "credits_charged": 1,
    "latency_ms": 2377,
    "fetched_at": "2026-10-25T12:00:00Z",
    "input": {
      "kind": "profile",
      "id": "fea18cd6-5ba9-4f7d-94ea-3d08c7cf31d7",
      "url": "https://hek.komi.io"
    },
    "credits_remaining": 9999,
    "client_request_id": null,
    "warnings": []
  }
}
```

Long arrays and strings are shortened here. Real responses are complete.

## One schema on 27 platforms.

The [response reference](https://socialtap.dev/docs/reference/komi/page/index.md#response) lists every field, its type and when it is `null`. [See the full schema](https://socialtap.dev/resources/profile/index.md).

- ### Null means unknown

  A field Komi doesn't show is null, never zero or an empty string, so a real zero always means zero.
- ### What it accepts

  The Komi page: its link (https://kimkardashian.komi.io, on any path), the host alone (kimkardashian.komi.io), or its username with or without the @.
- ### Write one parser

  Komi, TikTok, Instagram and 24 more platforms answer in these fields, so the code that reads one reads them all.

- **`platform`string**: Platform ID (tiktok, youtube, …).
- **`id`string**: Platform-native account ID (string; YouTube UC…, Reddit t2_…).
- **`username`string**: Handle without the @; null when the account has none.
- **`display_name`string**: Display name, channel title or page name; null when empty or not exposed.
- **`url`string**: Canonical profile URL.
- **`type`string**: Coarse account kind, as the platform labels it; unknown when it does not (TikTok labels organizations only). New values may be added; treat unknown values as unknown.
- **`bio`string**: Profile bio, channel description or page about text; null when empty or not exposed.
- **`avatar_url`string**: Profile picture URL (largest available). Platform CDN URLs can expire within hours.

Live data from 33 platforms.

[TikTok](https://socialtap.dev/apis/tiktok/index.md) · [Instagram](https://socialtap.dev/apis/instagram/index.md) · [Facebook](https://socialtap.dev/apis/facebook/index.md) · [YouTube](https://socialtap.dev/apis/youtube/index.md) · [Reddit](https://socialtap.dev/apis/reddit/index.md) · [Threads](https://socialtap.dev/apis/threads/index.md) · [Spotify](https://socialtap.dev/apis/spotify/index.md) · [Amazon](https://socialtap.dev/apis/amazon/index.md) · [Apple Music](https://socialtap.dev/apis/applemusic/index.md) · [Pinterest](https://socialtap.dev/apis/pinterest/index.md) · [Rumble](https://socialtap.dev/apis/rumble/index.md) · [X](https://socialtap.dev/apis/x/index.md) · [Bluesky](https://socialtap.dev/apis/bluesky/index.md) · [Twitch](https://socialtap.dev/apis/twitch/index.md) · [LinkedIn](https://socialtap.dev/apis/linkedin/index.md) · [Telegram](https://socialtap.dev/apis/telegram/index.md) · [TikTok Shop](https://socialtap.dev/apis/tiktokshop/index.md) · [Kwai](https://socialtap.dev/apis/kwai/index.md) · [Snapchat](https://socialtap.dev/apis/snapchat/index.md) · [SoundCloud](https://socialtap.dev/apis/soundcloud/index.md) · [Truth Social](https://socialtap.dev/apis/truthsocial/index.md) · [Kick](https://socialtap.dev/apis/kick/index.md) · [Komi](https://socialtap.dev/apis/komi/index.md) · [Lnk.Bio](https://socialtap.dev/apis/linkbio/index.md) · [Linkme](https://socialtap.dev/apis/linkme/index.md) · [Linktree](https://socialtap.dev/apis/linktree/index.md) · [Pillar](https://socialtap.dev/apis/pillar/index.md) · [TikTok Ad Library](https://socialtap.dev/apis/tiktok-ad-library/index.md) · [Facebook Ad Library](https://socialtap.dev/apis/facebook-ad-library/index.md) · [Facebook Events](https://socialtap.dev/apis/facebook-events/index.md) · [Facebook Marketplace](https://socialtap.dev/apis/facebook-marketplace/index.md) · [Google Ads Transparency Center](https://socialtap.dev/apis/google-ads-transparency/index.md) · [LinkedIn Ad Library](https://socialtap.dev/apis/linkedin-ad-library/index.md)

## What teams build with the Komi Page API.

- ### Collect the discount codes creators share
- ### Track the products and brands a creator promotes
- ### Find a musician's releases and tour dates
- ### Get a release's link on each streaming service

## Good to know before you build.

- A page has no follower counts or verified badge, so those fields are always null.
- category is what the owner chose, or null. created_at is when the page was made, null for a page Komi moved over from its earlier service.
- bio and the owner's name come from a slower lookup than the rest. When it fails, the page still comes back, with a partial_data warning naming them.
- When Komi's page answer is down, an older copy stands in with a partial_data warning: approximate_fields marks its items and external_links, category and created_at are unknown, and the page may no longer be shown at all.
- external_links lists every web link leading off the page once. platform_specific.komi.items keeps each item's type, group, section, image and price, in page order.
- Modules the owner has hidden are not returned, and neither is what a sign-up form keeps behind it (a secret link or code).
- A link's discount code is returned as coupon_code: its page on Komi shows it to anyone who follows the link.
- Contact links come with their type in social_links and items: an email address as a mailto: link, a WhatsApp link as it is. external_links holds web links only, so it has no mailto: link.
- A page Komi has switched off returns private_or_unavailable. A name no page has returns not_found.

## 1 credit per request. Failed requests are free.

Buy credits once and spend them on any endpoint, on any platform.

[Plans and packs](https://socialtap.dev/pricing/index.md) · [How this endpoint is priced](https://socialtap.dev/docs/reference/komi/page/index.md#pricing) · [How credits work](https://socialtap.dev/docs/credits/index.md)

| Source | Price per successful request | Per 1,000 requests |
| --- | --- | --- |
| Platform API `api` | 1 credit | $0.75–$1.97 |

- Cache hits are free.
- Credits from packs and top-ups never expire.
- A monthly plan's credits are spent first, and what is left of them ends at each renewal.
- Prices exclude tax: sales tax is added at checkout where it applies.
- Outside the US, plans and packs are sold to businesses: checkout asks for your VAT, GST or other business tax ID.

## Questions about the Komi Page API.

More in the [API reference](https://socialtap.dev/docs/reference/komi/page/index.md).

**How much does the Komi Page API cost?**

A request costs 1 credit. SocialTap credits cost $0.75–$1.97 per 1,000, depending on the plan or pack.

Other platforms

## Profiles on 26 more platforms.

- [TikTok Profile API](https://socialtap.dev/apis/tiktok/profile/index.md) (1 credit · `GET /v1/tiktok/profile`)
- [Instagram Profile API](https://socialtap.dev/apis/instagram/profile/index.md) (1 credit · `GET /v1/instagram/profile`)
- [Facebook Profile API](https://socialtap.dev/apis/facebook/profile/index.md) (1 credit · `GET /v1/facebook/profile`)
- [YouTube Channel API](https://socialtap.dev/apis/youtube/profile/index.md) (1 credit · `GET /v1/youtube/profile`)
- [Reddit Profile API](https://socialtap.dev/apis/reddit/profile/index.md) (1 credit · `GET /v1/reddit/profile`)
- [Threads Profile API](https://socialtap.dev/apis/threads/profile/index.md) (1 credit · `GET /v1/threads/profile`)
- [Spotify Artist API](https://socialtap.dev/apis/spotify/artist/index.md) (1 credit · `GET /v1/spotify/artist`)
- [Amazon Shop API](https://socialtap.dev/apis/amazon/shop/index.md) (1 credit · `GET /v1/amazon/shop`)
- [Apple Music Artist API](https://socialtap.dev/apis/applemusic/artist/index.md) (1 credit · `GET /v1/applemusic/artist`)
- [Pinterest Profile API](https://socialtap.dev/apis/pinterest/profile/index.md) (1 credit · `GET /v1/pinterest/profile`)
- [Rumble Channel API](https://socialtap.dev/apis/rumble/profile/index.md) (1 credit · `GET /v1/rumble/profile`)
- [X (Twitter) Profile API](https://socialtap.dev/apis/x/profile/index.md) (1 credit · `GET /v1/x/profile`)
- [Bluesky Profile API](https://socialtap.dev/apis/bluesky/profile/index.md) (1 credit · `GET /v1/bluesky/profile`)
- [Twitch Profile API](https://socialtap.dev/apis/twitch/profile/index.md) (1 credit · `GET /v1/twitch/profile`)
- [LinkedIn Profile API](https://socialtap.dev/apis/linkedin/profile/index.md) (From 1 credit · `GET /v1/linkedin/profile`)
- [Telegram Channel API](https://socialtap.dev/apis/telegram/channel/index.md) (1 credit · `GET /v1/telegram/channel`)
- [Kwai Profile API](https://socialtap.dev/apis/kwai/profile/index.md) (1 credit · `GET /v1/kwai/profile`)
- [Snapchat Profile API](https://socialtap.dev/apis/snapchat/profile/index.md) (1 credit · `GET /v1/snapchat/profile`)
- [SoundCloud Artist API](https://socialtap.dev/apis/soundcloud/artist/index.md) (1 credit · `GET /v1/soundcloud/artist`)
- [Truth Social Profile API](https://socialtap.dev/apis/truthsocial/profile/index.md) (1 credit · `GET /v1/truthsocial/profile`)
- [Lnk.Bio Profile API](https://socialtap.dev/apis/linkbio/profile/index.md) (1 credit · `GET /v1/linkbio/profile`)
- [Linkme Profile API](https://socialtap.dev/apis/linkme/profile/index.md) (1 credit · `GET /v1/linkme/profile`)
- [Linktree Profile API](https://socialtap.dev/apis/linktree/profile/index.md) (1 credit · `GET /v1/linktree/profile`)
- [Pillar Page API](https://socialtap.dev/apis/pillar/page/index.md) (1 credit · `GET /v1/pillar/page`)
- [Facebook Ad Library Advertiser Search API](https://socialtap.dev/apis/facebook/search_advertisers/index.md) (1 credit / page · `GET /v1/facebook/search_advertisers`)
- [Google Ads Transparency Center Advertiser API](https://socialtap.dev/apis/google/advertiser/index.md) (1 credit · `GET /v1/google/advertiser`)

## Try it on an account you know.

Paste its handle or link in the playground, or copy the request into your code.

100free credits

- No credit card
- Failed requests are free
- Works on all 218 endpoints

[Start for free](https://socialtap.dev/signup/) [Read the docs](https://socialtap.dev/docs/index.md)

---

[HTML version](https://socialtap.dev/apis/komi/page/) · [Docs index for AI agents](https://socialtap.dev/llms.txt) · [All docs in one file](https://socialtap.dev/llms-full.txt)
