Skip to content

Developer API

CamFind API — Live Cam Data

CamFind exposes a REST API for live cam room data across 50,000+ models and 11 platforms. The free tier requires no API key. The premium tier adds historical data, model analytics, and higher rate limits — built for affiliates, aggregators, and data teams.

Attribution required: Any product using this API must include a visible link back to camfind.xyz. That's how we keep the API free.

Free tier

$0

  • /api/rooms, /api/search, /api/rooms/stats
  • 60 req/min
  • Attribution required
  • No API key needed
Coming soon

Premium tier

$99/month

  • Everything in Free
  • Historical viewer data
  • Model analytics & growth trends
  • Industry stats & tag trends
  • 1000 req/min
  • No attribution required
  • API key auth (X-API-Key)

Base URL

https://camfind.xyz

All endpoints return JSON. No authentication headers required. CORS is open — you can call these from a browser or server.

Endpoints

GET/api/rooms

Returns live (and offline fallback) cam rooms, ranked by viewer count and platform revenue weight. Paginated.

Query parameters

limitnumberMax results. Hard cap: 48. Default: 48
offsetnumberPagination offset. Default: 0
platformstringFilter by platform slug: chaturbate | stripchat | bongacams | livejasmin | camsoda | cam4 | myfreecams | flirt4free | imlive | streamate | cambuilder
genderstringFilter by category: girls | guys | couples | trans

Example request

GET https://camfind.xyz/api/rooms?limit=48&offset=0

Example response

{
  "rooms": [
    {
      "id": "chaturbate:sweetlily99",
      "platform": "chaturbate",
      "username": "sweetlily99",
      "display_name": "sweetlily99",
      "thumbnail_url": "https://roomimg.stream.highwebmedia.com/ri/sweetlily99.jpg",
      "tags": ["female", "blonde", "lovense", "new"],
      "subject": "Hey! First week here ♥ PVT open",
      "viewer_count": 1842,
      "is_live": true,
      "stream_id": null
    }
    // ... up to 48 rooms
  ],
  "query": null,
  "offset": 0,
  "hasMore": true
}

Cache-Control: public, s-maxage=30, stale-while-revalidate=60

GET/api/rooms/trending

Returns up to 8 rooms currently gaining viewers fastest — sorted by viewer_delta (current minus previous crawl). Ideal for a trending strip or widget.

Example request

GET https://camfind.xyz/api/rooms/trending

Example response

{
  "rooms": [
    {
      "id": "stripchat:miakhalifa_x",
      "platform": "stripchat",
      "username": "miakhalifa_x",
      "display_name": "miakhalifa_x",
      "thumbnail_url": "https://thumb.stripchat.com/miakhalifa_x.jpg",
      "tags": ["female", "brunette", "squirt"],
      "subject": "Tip menu active 🔥",
      "viewer_count": 5120,
      "prev_viewer_count": 1890,
      "viewer_delta": 3230,
      "is_live": true,
      "stream_id": null
    }
    // ... up to 8 rooms
  ]
}

Cache-Control: public, s-maxage=60, stale-while-revalidate=120

GET/api/search

Keyword search across username, display_name, tags, and room subject. Returns results re-ranked by live status and viewer count. Searches are logged for analytics.

Query parameters

q*stringSearch query. Minimum 2 characters.
limitnumberMax results. Hard cap: 120. Default: 48
platformstringFilter by platform slug.
genderstringFilter by category: girls | guys | couples | trans
livestringPass live=1 to return live rooms only.
min_viewersnumberMinimum viewer count filter.
max_viewersnumberMaximum viewer count filter.

Example request

GET https://camfind.xyz/api/search?q=blonde+lovense&limit=24

Example response

{
  "rooms": [
    {
      "id": "bongacams:anna_blond",
      "platform": "bongacams",
      "username": "anna_blond",
      "display_name": "Anna",
      "thumbnail_url": "https://i.bongacams.com/anna_blond/snapshot.jpg",
      "tags": ["female", "blonde", "lovense", "petite"],
      "subject": "lovense on max for tips!",
      "viewer_count": 732,
      "is_live": true,
      "stream_id": null
    }
    // ...
  ],
  "query": "blonde lovense",
  "count": 87
}
GET/api/rooms/stats

Aggregate site statistics: live room counts, platform breakdown, top tags, and average viewer count. Useful for dashboards and site widgets.

Example request

GET https://camfind.xyz/api/rooms/stats

Example response

{
  "totalLive": 14823,
  "totalRooms": 52410,
  "platforms": {
    "chaturbate": 6102,
    "stripchat": 3281,
    "bongacams": 2144,
    "livejasmin": 1420,
    "camsoda": 890,
    "cam4": 542,
    "myfreecams": 444
  },
  "topTags": [
    { "tag": "female", "count": 11902 },
    { "tag": "blonde", "count": 4210 },
    { "tag": "lovense", "count": 3870 },
    { "tag": "latina", "count": 2940 },
    { "tag": "brunette", "count": 2710 }
    // ... up to 10 tags
  ],
  "avgViewers": 248
}

Cache-Control: public, s-maxage=60, stale-while-revalidate=120

Embeddable widgets

Drop a live cam mini-feed onto any page with a single <iframe>. The widget is self-contained HTML — dark theme, auto-refreshing every 120 seconds, no JavaScript dependencies required from your side. Each embed includes a “Powered by CamFind” backlink so attribution is built in automatically.

GET/api/embed/[platform]

Returns a self-contained HTML page showing up to 12 live rooms for the specified platform. Intended for <iframe> embedding on any third-party site. Each 'Watch' button routes through /api/click with source=embed_feed for affiliate tracking. Includes a 'Powered by CamFind' backlink. Auto-refreshes every 120 seconds via inline JavaScript.

Query parameters

limitnumberNumber of rooms to show. Range: 1–12. Default: 6
layoutstringDisplay style: list (compact ranked list) or grid (2-column thumbnail grid). Default: list

Example request

<!-- List layout (default) -->
<iframe
  src="https://camfind.xyz/api/embed/chaturbate?limit=6"
  width="100%" height="400" frameborder="0"
></iframe>

<!-- Grid layout -->
<iframe
  src="https://camfind.xyz/api/embed/stripchat?limit=6&layout=grid"
  width="100%" height="480" frameborder="0"
></iframe>

<!-- Supported platforms: chaturbate | stripchat | bongacams | livejasmin
                          camsoda | cam4 | myfreecams | flirt4free
                          imlive | streamate | cambuilder -->

Example response

Content-Type: text/html; charset=utf-8
Access-Control-Allow-Origin: *
Cache-Control: public, max-age=60, s-maxage=60, stale-while-revalidate=30
Content-Security-Policy: frame-ancestors *

<!-- Self-contained HTML page — renders a dark-themed live cam feed.
     No X-Frame-Options header — intentionally embeddable everywhere. -->

Cache-Control: public, s-maxage=60, stale-while-revalidate=30 — widget JS auto-refreshes every 120 s

GET/api/widget/top-models

Self-contained HTML widget listing top live models by viewer count across all platforms or a single platform. Lighter than the embed feed — useful for sidebar placement. Refreshes every 60 seconds.

Query parameters

limitnumberNumber of models to show. Range: 1–10. Default: 5
platformstringFilter to a single platform slug (optional — omit for cross-platform top list).

Example request

<iframe
  src="https://camfind.xyz/api/widget/top-models?limit=5"
  width="300" height="340" frameborder="0"
></iframe>

Example response

Content-Type: text/html; charset=utf-8
Access-Control-Allow-Origin: *
Cache-Control: public, s-maxage=55, stale-while-revalidate=30

Cache-Control: public, s-maxage=55, stale-while-revalidate=30

Room object fields

FieldTypeDescription
idstringUnique room ID: platform:username
platformstringPlatform slug (chaturbate, stripchat, etc.)
usernamestringModel's username on the platform
display_namestringDisplay name (may differ from username)
thumbnail_urlstringSnapshot image URL from the platform
tagsstring[]Array of category/vibe tags
subjectstring | nullCurrent room topic/subject line
viewer_countnumberLive viewer count at last crawl
is_livebooleanWhether the room is currently live
stream_idstring | nullInternal stream identifier (platform-specific)
viewer_deltanumber(trending only) Viewer gain since last crawl
prev_viewer_countnumber(trending only) Viewer count before last crawl

Attribution requirement

Any site, tool, widget, or application that displays data from the CamFind API must include a visible link back to camfind.xyz on any page or view that renders the data. This link keeps the API free for everyone.

Suggested link text and HTML:

<a href="https://camfind.xyz" rel="noopener">Powered by CamFind</a>

Premium API — Coming Soon

More data. More power. No attribution required.

The Premium API is designed for affiliates, aggregators, and data teams that need deeper signal than live room counts. Historical data, model-level analytics, and industry statistics — all via a single authenticated endpoint.

GET/api/v2/roomsPremium

Enriched room feed — same parameters as /api/rooms but adds CamScore (0–100 popularity signal), tags_parsed (gender/appearance/activity breakdown), and platform_info. Requires X-API-Key header.

Query parameters

limitnumberMax results. Hard cap: 200. Default: 48
offsetnumberPagination offset. Default: 0
platformstringFilter by platform slug.
genderstringFilter by category: girls | guys | couples | trans
livestringPass live=1 to return live rooms only.

Example request

GET https://camfind.xyz/api/v2/rooms?limit=10&live=1
X-API-Key: your_api_key

Example response

{
  "rooms": [
    {
      "id": "chaturbate:sweetlily99",
      "platform": "chaturbate",
      "platform_info": {
        "name": "Chaturbate",
        "color": "#F59E0B",
        "revenue_weight": 0.7
      },
      "username": "sweetlily99",
      "display_name": "sweetlily99",
      "thumbnail_url": "https://roomimg.stream.highwebmedia.com/ri/sweetlily99.jpg",
      "tags": ["female", "blonde", "lovense", "new"],
      "tags_parsed": {
        "gender": ["female"],
        "appearance": ["blonde"],
        "activity": ["lovense"],
        "other": ["new"]
      },
      "subject": "Hey! First week here ♥ PVT open",
      "viewer_count": 1842,
      "cam_score": 74,
      "is_live": true,
      "stream_id": null
    }
    // ... up to 200 rooms
  ],
  "meta": {
    "limit": 10,
    "offset": 0,
    "count": 10,
    "has_more": true,
    "api_version": "v2"
  }
}

Planned endpoints (waitlist)

GET /api/v2/models/:username/history

Viewer count time series for a model — hourly data points over the last 90 days.

GET /api/v2/models/:username/analytics

Peak broadcast hours, platform presence across sites, follower growth trend, top co-occurring tags.

GET /api/v2/stats/industry

Platform rankings by live model count and estimated viewer share, top tag trends over 7/30 days, regional traffic distribution.

GET /api/v2/stats/tags

Tag frequency over time — identify rising and declining niches. Useful for affiliate site SEO and content strategy.

Join the Premium API waitlist

Get early access, locked-in pricing, and input on which analytics endpoints we build first. No commitment required.

FAQ

Is the API free to use?

The free tier is unauthenticated and open to the public — no API key required. A Premium tier ($99/month) is coming soon with historical data, model analytics, higher rate limits, and no attribution requirement.

Are there rate limits?

Free tier: please keep requests under 60/minute per IP. Burst traffic will be throttled by our CDN. Premium tier: 1000 req/min. If you need enterprise volume, email hello@camfind.xyz.

Is attribution required?

Yes for the free tier. Any product using free CamFind API data must include a visible link back to camfind.xyz. Premium API subscribers are exempt from the attribution requirement.

Can I use the API for commercial projects?

Yes, with attribution (free tier) or without (premium tier). You can build affiliate sites, cam widgets, model discovery tools, and other commercial products. You may not resell the raw data or present it as your own crawled data.

How fresh is the data?

Live rooms are crawled every 30 seconds. The /api/rooms feed has a 30-second CDN cache (stale-while-revalidate). Stats are cached for 60 seconds. Trending updates every 60 seconds.

What platforms are included?

Chaturbate, Stripchat, BongaCams, LiveJasmin, CamSoda, Cam4, MyFreeCams, Flirt4Free, ImLive, Streamate, and CamBuilder — 11 platforms total.

Can I filter by platform or gender?

Yes. The /api/rooms and /api/search endpoints both accept ?platform= and ?gender= (girls | guys | couples | trans) query parameters.

What extra data does the Premium v2 API return?

The v2 endpoint adds CamScore (a 0–100 popularity/revenue signal), tags_parsed (gender/appearance/activity breakdown), and platform_info (name, color, revenue weight). Historical and analytics endpoints are coming in the next release.

Do you have a webhook or streaming API?

Not yet. If you need real-time push events, poll /api/rooms/trending every 60 seconds — it surfaces rooms with the fastest viewer growth. Webhooks are on the Premium roadmap. Email hello@camfind.xyz if you have a use case.

Contact & support

Questions, higher rate limits, partnership inquiries, or to get your integration listed here — email hello@camfind.xyz.

Explore CamFind