LurkAPI
Docs · Migrating from another provider

Migrating from another provider

If you're moving from ScrapeCreators or a similar API, most code keeps working once you change the base URL and the API key. This page lists every difference.

Switch in three steps

  1. 1Get a LurkAPI key. It starts with lk_live_.
  2. 2Change the base URL to https://api.lurkapi.com. Paths stay the same.
  3. 3Keep sending the key in the x-api-key header.

69 of ScrapeCreators' endpoints are at the same path here, so a client written for it usually works as it is. A call looks like this:

curl
curl "https://api.lurkapi.com/v1/facebook/adLibrary/search/ads?query=running+shoes&country=US&status=active" \-H "x-api-key: YOUR_API_KEY"

Then check your code against the differences below.

What stays the same

  • Paths, the x-api-key header, and the success, credits_remaining and credits_charged fields. error is still a string.
  • Allowed values work in any case (status=ACTIVE), and so do an r/ prefix on subreddit names and trailing slashes.
  • Unknown parameters such as get_transcript are ignored. Blank parameters count as unset, and a repeated parameter uses its first value.

What's different

Requests

  • Keys start with lk_live_. Authorization: Bearer <key> works too.
  • Only GET. Other methods return 405 method_not_allowed. Some providers also take POST on search ads, company ads and post comments. Send those as GET, with the parameters in the URL.
  • Instagram profile, user posts and user reels take username (or url), not handle. For the next page, pass after, not next_max_id or max_id.
  • TikTok user_id and region aren't supported on profile, videos, search or shop.
  • trim must be true or false (any case). Anything else is 400 invalid_params.
  • Search companies country takes ALL or a 2-letter country code, nothing else.
  • cache_max_age is ignored. Each endpoint sets its own cache time, shown on its page. A cached answer costs the same as a fresh one.

Responses

  • credits_remaining is your real balance after the call.
  • Instagram profile and X profile come back in a different shape. Each link shows a real response.
  • Facebook Ad Library watermarked_resized_image_url is "" rather than null, and ig_verification is false rather than null.
  • Company ads defaults to status=all. Pass status=active for running ads only.
  • Subreddit search returns posts only.

Errors and rate limits

  • Error bodies are { success: false, error, code, docs, issues? }. Check code, not the error text. 502 and 503 errors don't include the platform's own error details. All error codes.
  • Status codes: no credits left is 402 insufficient_credits, too many calls is 429 rate_limited, a missing key is 401 missing_api_key and a revoked key is 401 invalid_api_key.
  • Rate limit: 50 requests per 10 seconds per account, with a retry-after header on 429. High-volume accounts get 100. Email support@lurkapi.com to ask.

Charging

A call is charged once it reaches the platform. That includes not_found and other errors the endpoint itself returns, like a bad cursor. These are free: invalid parameters (caught before the call), 401, 402 and 429 rejections, and 5xx failures. A cached answer costs the same as a fresh one. Free tries without an account follow the same rule.

Fields we don't return

Reddit data comes from reddit.com's own pages. We leave out fields those pages don't show rather than guess them. The four Facebook Ad Library endpoints and subreddit search return every key.

  • Subreddit posts (posts[]): no downs, subreddit_subscribers, num_crossposts, edited, distinguished, archived, pinned, media, secure_media, media_embed, gilded, all_awardings, author_flair_text or link_flair_css_class, and none of Reddit's moderator (mod_reports, banned_by…) or viewer-state (saved, likes, clicked…) fields.
  • Search Reddit (posts[]): only what the search page shows, so also no selftext, selftext_html, url, url_overridden_by_dest, domain, is_self, is_video, preview, upvote_ratio, link_flair_text, stickied, locked or total_awards_received. Pass the post's URL to post comments for the full post.
  • Post comments: post lacks the same fields as subreddit posts, plus num_duplicates; comments[] have no downs, edited, distinguished, stickied, locked, controversiality, score_hidden, gilded, all_awardings, total_awards_received, author_flair_text or collapsed_reason, nor moderator or viewer-state fields.
  • Subreddit details: no subscribers, advertiser_category or submit_text. Use weekly_active_users for size.

Older `/api/v1/` clients

  • /api/v1/… paths still work. https://api.lurkapi.com/api/v1/facebook/adLibrary/search/ads is the same endpoint as https://api.lurkapi.com/v1/facebook/adLibrary/search/ads.
  • credits_remaining used to be -1.
  • Errors used to be { error }, with different text: "missing required query param: query" is now "query: required". A revoked key used to get 403, and now gets 401.
  • The Facebook ad endpoint and the Reddit endpoints used to treat any trim value other than true as false. Now anything but true or false is a 400.

Endpoints and prices

Endpoints cost 1–31 credits per call.

PathEndpointCost
/v1/facebook/adLibrary/search/adsFacebook: Search Ad Library ads1 credit
/v1/facebook/adLibrary/company/adsFacebook: Ad Library ads by company1 credit
/v1/facebook/adLibrary/adFacebook: Ad Library ad details1 credit
/v1/facebook/adLibrary/search/companiesFacebook: Search Ad Library companies1 credit
/v1/facebook/profileFacebook: Public profile1 credit
/v1/facebook/postFacebook: Public post1 credit
/v1/facebook/profile/postsFacebook: Profile posts1 credit
/v1/facebook/profile/eventsFacebook: Profile events1 credit
/v1/facebook/post/commentsFacebook: Post comments1 credit
/v1/reddit/subredditReddit: Subreddit posts1 credit
/v1/reddit/subreddit/detailsReddit: Subreddit details1 credit
/v1/reddit/subreddit/searchReddit: Subreddit search1 credit
/v1/reddit/searchReddit: Search Reddit1 credit
/v1/reddit/post/commentsReddit: Post comments1 credit
/v1/youtube/videoYouTube: Video details1 credit
/v1/youtube/video/transcriptYouTube: Video transcript1 credit
/v1/youtube/video/commentsYouTube: Video comments1 credit
/v1/youtube/video/comment/repliesYouTube: Comment replies1 credit
/v1/youtube/channelYouTube: Channel details1 credit
/v1/youtube/channel-videosYouTube: Channel videos1 credit
/v1/youtube/channel/shortsYouTube: Channel Shorts1 credit
/v1/youtube/searchYouTube: Search YouTube1 credit
/v1/tiktok/profileTikTok: Profile1 credit
/v2/tiktok/videoTikTok: Video details1 credit
/v1/tiktok/video/transcriptTikTok: Video transcript1 credit; 2 if speech-to-text runs
/v3/tiktok/profile/videosTikTok: Profile videos1 credit
/v1/tiktok/video/commentsTikTok: Video comments1 credit
/v1/tiktok/video/comment/repliesTikTok: Comment replies1 credit
/v1/tiktok/search/hashtagTikTok: Hashtag videos1 credit
/v1/tiktok/songTikTok: Song1 credit
/v1/tiktok/song/videosTikTok: Song videos1 credit
/v1/tiktok/ad-library/searchTikTok: Search TikTok Ad Library1 credit
/v1/tiktok/ad-library/adTikTok: TikTok Ad Library ad1 credit
/v1/tiktok/user/liveTikTok: Live status1 credit
/v1/tiktok/user/storiesTikTok: Public stories1 credit
/v1/tiktok/productTikTok: TikTok Shop product1 credit
/v1/tiktok/search/keywordTikTok: Search videos1 credit
/v1/tiktok/shop/productsTikTok: TikTok Shop store products1 credit
/v1/tiktok/shop/search/suggestionsTikTok: TikTok Shop search suggestions1 credit
/v1/google/adLibrary/advertisers/searchGoogle: Search Google advertisers1 credit
/v1/google/company/adsGoogle: Google ads by company1 credit
/v1/google/adGoogle: Google ad details1 credit
/v1/google/maps/searchGoogle: Search Google Maps1 credit
/v1/google/maps/placeGoogle: Google Maps place details1 credit
/v1/google/maps/reviewsGoogle: Google Maps reviews1 credit
/v1/google/newsGoogle: Search Google News1 credit
/v1/google/autocompleteGoogle: Google autocomplete1 credit
/v1/bluesky/profileBluesky: Profile1 credit
/v1/bluesky/user/postsBluesky: User posts1 credit
/v1/bluesky/postBluesky: Post1 credit
/v1/snapchat/profileSnapchat: Profile and stories1 credit
/v1/truthsocial/profileTruth Social: Profile1 credit
/v1/truthsocial/user/postsTruth Social: User posts1 credit
/v1/truthsocial/postTruth Social: Post1 credit
/v1/telegram/channelTelegram: Channel1 credit
/v1/telegram/channel/postsTelegram: Channel posts1 credit
/v1/telegram/postTelegram: Post1 credit
/v1/twitter/tweetX (Twitter): Tweet1 credit
/v1/twitter/profileX (Twitter): Profile1 credit
/v1/twitter/user-tweetsX (Twitter): User tweets1 credit
/v1/threads/profileThreads: Threads profile1 credit
/v1/threads/user/postsThreads: Threads account posts1 credit
/v1/threads/postThreads: Threads post1 credit
/v1/instagram/profileInstagram: Profile1 credit
/v2/instagram/user/postsInstagram: User posts1 credit
/v1/instagram/postInstagram: Post1 credit
/v2/instagram/post/commentsInstagram: Post comments1 credit
/v1/instagram/user/reelsInstagram: User reels1 credit
/v2/instagram/media/transcriptInstagram: Media transcript1 credit; 2 if speech-to-text runs
/v2/instagram/reels/searchInstagram: Search reels1 credit
/v1/instagram/profile/similarInstagram: Similar profiles1 credit
/v1/linkedin/profileLinkedIn: LinkedIn profile1 credit
/v1/linkedin/companyLinkedIn: LinkedIn company page1 credit
/v1/linkedin/company/postsLinkedIn: LinkedIn company posts1 credit
/v1/linkedin/jobs/searchLinkedIn: Search LinkedIn jobs1 credit
/v1/linkedin/jobLinkedIn: LinkedIn job details1 credit
/v1/linkedin/ads/searchLinkedIn: Search LinkedIn ads1 credit
/v1/linkedin/adLinkedIn: LinkedIn ad details1 credit
/v1/linktreeLink-in-bio: Linktree page1 credit
/v1/ebay/searcheBay: Search eBay listings2 credits
/v1/ebay/itemeBay: eBay listing details2 credits
/v1/web/scrapeWeb: Scrape a page (Auto)1 credit; +3 if a browser on separate IPs gets it, +4 if it needs a residential IP, +13 if a browser renders it on a residential IP, +10 if a captcha is solved
/v1/web/fetchWeb: Fetch a page (plain request)1 credit
/v1/web/renderWeb: Render a page (browser)1 credit; 11 if a captcha is solved
/v1/web/unblockWeb: Unblock a page (separate IPs)4 credits
/v1/web/residentialWeb: Fetch a page from a residential IP5 credits
/v1/web/render-residentialWeb: Render a page from a residential IP14 credits; 24 if a captcha is solved
/v1/web/customWeb: Scrape a page with your own steps1 credit; +3 if a browser on separate IPs gets it, +4 if it needs a residential IP, +13 if a browser renders it on a residential IP, +10 if a captcha is solved
/v1/account/credit-balanceAccount: Credit balancefree

Also included

  • Claude and MCP. Every endpoint is also a tool that Claude and other AI apps can call, at https://api.lurkapi.com/mcp. Connect it to Claude.
  • Docs for AI agents. llms.txt, openapi.json, and every docs page as markdown (add .md to the URL).
  • Pay per call, from $0.59 per 1,000 credits, with no subscription. Pricing.

From the blog

All posts