logo
languageENdown
menu

Twitter Keyword Search

Give one Twitter search keyword and an expected count to get matching public post identifiers, publish times, and collection metadata.

Overview

Researching how a topic appears in Twitter search often starts with a dependable set of matching post identifiers and the times those posts were published. This app turns one search keyword into a structured collection of matching items, keeping the keyword and collection context beside each identifier so the dataset remains understandable after it is exported or joined with other research material.

The result is useful as a discovery index: it shows which public posts were associated with a brand, product, topic, or campaign at collection time. It is especially suited to building repeatable monitoring sets, comparing the content populations found for different terms, and preparing identifiers for later analysis without manually copying items from search pages.

Data notes

Each record represents one Twitter post associated with the submitted search keyword, or a no-data marker for that search. Content IDs are de-duplicated within the returned dataset. Matched keyword, Source item, and Business ID preserve the collection context and may repeat across many records from the same search. Publish time, Collection time, and Clean update time are returned without timezone information, so they should not be treated as absolute cross-region timestamps without additional context. Keyword type describes the kind of search item attached to the record.

The collection contains identifiers, timestamps, and collection metadata, not post text, media, engagement totals, comments, or a complete author profile. A No-data marker distinguishes search metadata that reports no matching content from ordinary matched records. Private, deleted, or otherwise non-searchable Twitter content is not covered.

What a result looks like

Each row is one matched Twitter post or a no-data marker associated with the search keyword.

Content IDMatched keywordPublish timeCollection timeNo-data marker
2092504987695714392shokz2026-03-17T15:43:442026-08-26T18:50:22No
2092527502547927469shokz2025-12-19T17:41:092026-08-26T18:50:22No

Keyword type, Collection record ID, Business ID, Source item, and Clean update time are also available when supplied with the record.

Use cases

  • For topic discovery, group rows by Matched keyword and count distinct Content ID values to compare the searchable post population associated with each term.
  • For monitoring, repeat a keyword collection and compare Content ID sets while using Publish time and Collection time as source-provided context for newly observed items.
  • For provenance checks, compare Matched keyword, Source item, and Business ID to confirm which search context produced each post before combining datasets.
  • For follow-up review, filter on No-data marker to separate empty-search metadata from usable matched records.

Scope and boundaries

One Twitter search keyword per task with an expected result count from 1 to 2000; results are returned in complete batches of 20 and may be rounded up; fetch protection covers 100 pages or 2000 records; coverage is limited to public Twitter keyword search listings.

  • Good for
  • When you need public Twitter post identifiers and publish times returned by a keyword search for a brand, product, topic, or campaign.
  • When you need a structured list that connects each matched post with its search keyword and collection metadata.
  • Do not use for
  • When you need post text, media, engagement metrics, comments, or complete author profiles.
  • When you need an immediate single-record lookup rather than a background keyword collection task.

Failure handling

Failure and retry behavior declared by the author. We recommend including it in your system prompt when integrating.

  1. 1If no matching records are returned, verify the keyword or try a shorter and broader search phrase.
  2. 2Keep completed records after a partial success; resubmit the same input after a failed or expired task.
  3. 3Retry later after rate limiting, temporary service unavailability, or a timeout.
  4. 4If authentication fails, verify the API Key configured for the execution environment.

Input

Parameters required to call this App, generated from the input.schema in manifest.json.

FieldBusiness nameTypeRequiredDefaultEnum / ConstraintsExampleDescription
keywordSearch keywordstringYes——ShokzA brand, product, topic, or phrase to search on Twitter. Each task accepts one keyword from 1 to 512 characters.
crawl_countExpected result countintegerYes—1–20001Expected number of search results, from 1 to 2000. Results are returned in complete batches of 20, so the actual count may be rounded up. A partial batch is still billed as 20 records.

Output

Field structure of a single record, generated from the output.schema in manifest.json.

FieldBusiness nameTypeExampleDescription
content_idContent IDstring2092504987695714392Unique identifier of the matched Twitter post.
keywordMatched keywordstringshokzSearch keyword associated with the collected post.
keyword_typeKeyword typestringkeywordClassification of the search item associated with the record.
publish_timePublish timestring2026-03-17T15:43:44Timestamp when the post was published; the source does not specify a timezone.
crawl_timeCollection timestring2026-08-26T18:50:22Timestamp associated with collecting the record; the source does not specify a timezone.
clean_update_timeClean update timestring2026-08-26T18:50:45Timestamp associated with cleaning the collected record; the source does not specify a timezone.
cur_idCollection record IDstring6a8ec50697a2800ddeb6901fUnique identifier of this collected row; it may differ from the Twitter post Content ID.
biz_idBusiness IDstringshokzBusiness grouping identifier returned with the collected record.
source_itemSource itemstringshokzKeyword item associated with the collection that produced this record.
no_dataNo-data markerbooleanfalseIndicates whether this search item produced no matching records.

Record schema

Output is returned record by record. detail.output.idFieldHint

output.schema
{
  "type": "object",
  "properties": {
    "content_id": {
      "type": "string",
      "title": "Content ID",
      "description": "Unique identifier of the matched Twitter post.",
      "prefill": "2092504987695714392"
    },
    "keyword": {
      "type": "string",
      "title": "Matched keyword",
      "description": "Search keyword associated with the collected post.",
      "prefill": "shokz"
    },
    "keyword_type": {
      "type": "string",
      "title": "Keyword type",
      "description": "Classification of the search item associated with the record.",
      "prefill": "keyword"
    },
    "publish_time": {
      "type": "string",
      "title": "Publish time",
      "description": "Timestamp when the post was published; the source does not specify a timezone.",
      "prefill": "2026-03-17T15:43:44"
    },
    "crawl_time": {
      "type": "string",
      "title": "Collection time",
      "description": "Timestamp associated with collecting the record; the source does not specify a timezone.",
      "prefill": "2026-08-26T18:50:22"
    },
    "clean_update_time": {
      "type": "string",
      "title": "Clean update time",
      "description": "Timestamp associated with cleaning the collected record; the source does not specify a timezone.",
      "prefill": "2026-08-26T18:50:45"
    },
    "cur_id": {
      "type": "string",
      "title": "Collection record ID",
      "description": "Unique identifier of this collected row; it may differ from the Twitter post Content ID.",
      "prefill": "6a8ec50697a2800ddeb6901f"
    },
    "biz_id": {
      "type": "string",
      "title": "Business ID",
      "description": "Business grouping identifier returned with the collected record.",
      "prefill": "shokz"
    },
    "source_item": {
      "type": "string",
      "title": "Source item",
      "description": "Keyword item associated with the collection that produced this record.",
      "prefill": "shokz"
    },
    "no_data": {
      "type": "boolean",
      "title": "No-data marker",
      "description": "Indicates whether this search item produced no matching records.",
      "prefill": false
    }
  },
  "required": [],
  "additionalProperties": false
}

Integration

This App can be integrated via MCP, API, SDK, or file export. All channels share the same capabilities and pricing. Every request authenticates with the Authorization: Bearer header using an API key (long-lived, created in the Data Hub Console); MCP clients can also sign in with OAuth, no key required. More options such as CLI and Skill are on the way.

With the MCP (Model Context Protocol), you can call this App directly from AI clients like Claude and Cursor. Pick your client and auth mode, then copy the config below.

Client config

Replace the value after Bearer with your long-lived API key. Works in any client, CI, or headless environment.

mcpServers config
{
  "mcpServers": {
    "hello_moto__twitter-keyword-list": {
      "type": "http",
      "url": "https://mcp-v2.octoparse.com?pin=hello_moto/twitter-keyword-list",
      "headers": { "Authorization": "Bearer <YOUR_API_KEY>" }
    }
  }
}

Let AI set it up for you

Don't want to edit configs by hand? Copy the install prompt and paste it into any AI client. It will complete the setup its own way. (The prompt asks the AI to request your API key from you, so credentials never end up in chat history or shared configs.)

detail.access.mcp.composeHint

Pricing

20 returned records

Charged by the number of records successfully returned. Failed runs are not charged. Billed in units of 20 record; any partial unit is rounded up to 20 record.

$0.002/ 20 record
Per task submitted

Charged once per submitted run, regardless of how many records are returned.

$0.0001/ run

Multiple billing events accumulate independently. See each item for details. Failed runs are not charged.

View credits

Try it now

Fill in the parameters and run. Results come from a real call.

Example
Parameters are validated against input.schema before submission
Please fill in the required parameters first
From $0.002 / 20 record