Bookmark Search API
Search the bookmarks of the account behind your registered session by keyword. Matches against bookmarked tweet text and returns full tweet objects. Cursor-paginated. Requires a registered session. Cost: $0.0008 per call.
GET user/bookmark_search performs a full-text keyword search across the bookmarks saved to the registered account's session. It returns matching tweets as full Tweet objects, paginated by cursor. Each page includes a count of items returned and a next_cursor plus has_more flag for retrieving additional results. Costs $0.0008 per call.
Authorization
bearerAuth Pass your API key as a bearer token on every request: Authorization: Bearer <API_KEY>.
In: header
Query Parameters
Keyword(s) to match against your bookmarked tweets' text.
Items per page. Defaults to 20; capped at 100.
Pagination cursor from a previous response's next_cursor.
Response Body
application/json
application/json
application/json
application/json
application/json
application/json
application/json
curl -X GET "https://example.com/user/bookmark_search?query=cursor+pagination"{ "count": 1, "next_cursor": "DAACCgAC...", "tweets": [ { "id": "1759123456789012345", "text": "The empty array is the universal stop signal for cursor pagination.", "created_at": "Tue Feb 20 14:02:11 +0000 2026", "author": { "id": "745273", "username": "naval", "name": "Naval" }, "favorite_count": 4821 } ]}{ "error": "bad_request", "message": "Missing or malformed parameter. Fix the request before retrying."}{ "error": "unauthorized", "message": "The API key is missing, malformed, or revoked. Check the Authorization header."}{ "error": "insufficient_credits", "message": "Your balance is exhausted. Top up your credits to continue."}{ "error": "not_found", "message": "The resource does not exist, for example a deleted tweet or a private account."}{ "error": "rate_limited", "message": "Too many requests. Back off and retry with exponential backoff."}{ "error": "server_error", "message": "Something failed on our side. Retry with backoff; if it persists, contact support."}Pricing
| Unit | Price |
|---|---|
| Per call | $0.0008 |
| Per 1,000 calls | $0.80 |
| Per 1,000 records (~20 per call) | ~$0.04 |
When to use
Use this endpoint when a user needs to locate a specific bookmarked tweet by keyword instead of scrolling through the full bookmarks list. Reach for it over the plain bookmarks endpoint whenever the query is known and filtering by text match is the goal, rather than retrieving bookmarks in save order.
Notes
- Needs a session for the account you are reading: either register one once (POST /customer/session), or pass per-call inline credentials as x-auth-token and x-ct0 request headers, which let a single API key act as many accounts. Returns 409 session_required if neither is supplied, 401 session_dead when the session has expired.
- Searches only your own bookmarks, not the public tweet corpus.
Pagination
This endpoint is cursor-paginated and returns roughly 20 records per call. Pass the next_cursor from each response back as the cursor parameter to read the next page. Stop when the records array comes back empty: follower-graph endpoints return a non-null cursor even on the final page, so the empty array is the only reliable stop signal. See Pagination for the full loop.
Related endpoints
- User Info by Username: Fetch a full profile by @handle.
- User Info by ID: Fetch a full profile by numeric user ID.
FAQ
How is this different from the plain bookmarks endpoint?
The plain bookmarks endpoint returns your saved tweets in list order with no filtering. This endpoint takes a required query parameter and matches it against the text of tweets you've bookmarked, so you get only bookmarks whose tweet text contains the keyword(s).
How do I page through results and how many can I get per request?
Pass the cursor value from a response's next_cursor field as the cursor parameter on your next request. count controls items per page, defaulting to 20 with a cap of 100. Check has_more to know whether another page exists before requesting it.
Bookmarks GET
Fetch the bookmarked tweets for the account behind your registered session, newest first. Each item is a full tweet object with author and engagement counts. Cursor-paginated. Requires a registered session. Cost: $0.0008 per call.
User Likes GET
Read the Likes tab of the account named by user_id, read through your registered session, most recent first. Returns full tweet objects, cursor-paginated. Returns an empty list when the account hides its likes. Requires a registered session and a numeric user_id. Cost: $0.0008 per call.