x-twitter-scraper 0.7.2 → 0.9.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (157) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +24 -0
  3. data/README.md +3 -3
  4. data/lib/x_twitter_scraper/models/credit_topup_balance_response.rb +5 -5
  5. data/lib/x_twitter_scraper/models/draw_export_params.rb +8 -3
  6. data/lib/x_twitter_scraper/models/draw_list_params.rb +2 -2
  7. data/lib/x_twitter_scraper/models/error.rb +8 -0
  8. data/lib/x_twitter_scraper/models/event_list_params.rb +13 -5
  9. data/lib/x_twitter_scraper/models/extraction_estimate_cost_params.rb +731 -82
  10. data/lib/x_twitter_scraper/models/extraction_estimate_cost_response.rb +1 -0
  11. data/lib/x_twitter_scraper/models/extraction_export_results_params.rb +145 -1
  12. data/lib/x_twitter_scraper/models/extraction_list_params.rb +2 -2
  13. data/lib/x_twitter_scraper/models/extraction_retrieve_params.rb +70 -3
  14. data/lib/x_twitter_scraper/models/extraction_run_params.rb +662 -1
  15. data/lib/x_twitter_scraper/models/extraction_run_response.rb +27 -48
  16. data/lib/x_twitter_scraper/models/guest_wallet_create_response.rb +8 -8
  17. data/lib/x_twitter_scraper/models/guest_wallet_topup_response.rb +9 -9
  18. data/lib/x_twitter_scraper/models/monitor.rb +29 -1
  19. data/lib/x_twitter_scraper/models/paginated_tweets.rb +4 -4
  20. data/lib/x_twitter_scraper/models/paginated_users.rb +5 -5
  21. data/lib/x_twitter_scraper/models/support/attachment_download_params.rb +28 -0
  22. data/lib/x_twitter_scraper/models/x/community_retrieve_members_params.rb +113 -1
  23. data/lib/x_twitter_scraper/models/x/community_retrieve_moderators_params.rb +117 -1
  24. data/lib/x_twitter_scraper/models/x/list_retrieve_followers_params.rb +117 -6
  25. data/lib/x_twitter_scraper/models/x/list_retrieve_members_params.rb +116 -1
  26. data/lib/x_twitter_scraper/models/x/tweet_get_favoriters_params.rb +117 -6
  27. data/lib/x_twitter_scraper/models/x/tweet_get_quotes_params.rb +153 -1
  28. data/lib/x_twitter_scraper/models/x/tweet_get_replies_params.rb +246 -16
  29. data/lib/x_twitter_scraper/models/x/tweet_get_replies_response.rb +3 -2
  30. data/lib/x_twitter_scraper/models/x/tweet_get_retweeters_params.rb +117 -6
  31. data/lib/x_twitter_scraper/models/x/tweet_search_params.rb +187 -14
  32. data/lib/x_twitter_scraper/models/x/tweet_search_response.rb +299 -0
  33. data/lib/x_twitter_scraper/models/x/user_retrieve_followers_params.rb +143 -10
  34. data/lib/x_twitter_scraper/models/x/user_retrieve_followers_response.rb +241 -0
  35. data/lib/x_twitter_scraper/models/x/user_retrieve_followers_you_know_params.rb +117 -6
  36. data/lib/x_twitter_scraper/models/x/user_retrieve_following_params.rb +143 -10
  37. data/lib/x_twitter_scraper/models/x/user_retrieve_following_response.rb +241 -0
  38. data/lib/x_twitter_scraper/models/x/user_retrieve_likes_params.rb +153 -1
  39. data/lib/x_twitter_scraper/models/x/user_retrieve_media_params.rb +153 -1
  40. data/lib/x_twitter_scraper/models/x/user_retrieve_mentions_params.rb +153 -1
  41. data/lib/x_twitter_scraper/models/x/user_retrieve_replies_params.rb +159 -7
  42. data/lib/x_twitter_scraper/models/x/user_retrieve_search_params.rb +116 -1
  43. data/lib/x_twitter_scraper/models/x/user_retrieve_tweets_params.rb +159 -7
  44. data/lib/x_twitter_scraper/models/x/user_retrieve_verified_followers_params.rb +157 -8
  45. data/lib/x_twitter_scraper/models/x/user_retrieve_verified_followers_response.rb +245 -0
  46. data/lib/x_twitter_scraper/models/x/x_account.rb +7 -11
  47. data/lib/x_twitter_scraper/resources/credits.rb +2 -2
  48. data/lib/x_twitter_scraper/resources/draws.rb +5 -2
  49. data/lib/x_twitter_scraper/resources/events.rb +10 -4
  50. data/lib/x_twitter_scraper/resources/extractions.rb +383 -84
  51. data/lib/x_twitter_scraper/resources/guest_wallets.rb +9 -13
  52. data/lib/x_twitter_scraper/resources/support/attachments.rb +42 -0
  53. data/lib/x_twitter_scraper/resources/support.rb +5 -0
  54. data/lib/x_twitter_scraper/resources/x/communities.rb +95 -4
  55. data/lib/x_twitter_scraper/resources/x/lists.rb +96 -5
  56. data/lib/x_twitter_scraper/resources/x/tweets.rb +286 -28
  57. data/lib/x_twitter_scraper/resources/x/users.rb +531 -41
  58. data/lib/x_twitter_scraper/version.rb +1 -1
  59. data/lib/x_twitter_scraper.rb +7 -1
  60. data/rbi/x_twitter_scraper/models/credit_topup_balance_response.rbi +6 -6
  61. data/rbi/x_twitter_scraper/models/draw_export_params.rbi +6 -3
  62. data/rbi/x_twitter_scraper/models/draw_list_params.rbi +2 -2
  63. data/rbi/x_twitter_scraper/models/error.rbi +40 -0
  64. data/rbi/x_twitter_scraper/models/event_list_params.rbi +15 -4
  65. data/rbi/x_twitter_scraper/models/extraction_estimate_cost_params.rbi +1338 -86
  66. data/rbi/x_twitter_scraper/models/extraction_estimate_cost_response.rbi +5 -0
  67. data/rbi/x_twitter_scraper/models/extraction_export_results_params.rbi +198 -0
  68. data/rbi/x_twitter_scraper/models/extraction_list_params.rbi +2 -2
  69. data/rbi/x_twitter_scraper/models/extraction_retrieve_params.rbi +194 -2
  70. data/rbi/x_twitter_scraper/models/extraction_run_params.rbi +1221 -0
  71. data/rbi/x_twitter_scraper/models/extraction_run_response.rbi +35 -162
  72. data/rbi/x_twitter_scraper/models/guest_wallet_create_response.rbi +8 -6
  73. data/rbi/x_twitter_scraper/models/guest_wallet_topup_response.rbi +9 -7
  74. data/rbi/x_twitter_scraper/models/monitor.rbi +54 -3
  75. data/rbi/x_twitter_scraper/models/paginated_tweets.rbi +4 -4
  76. data/rbi/x_twitter_scraper/models/paginated_users.rbi +5 -5
  77. data/rbi/x_twitter_scraper/models/support/attachment_download_params.rbi +51 -0
  78. data/rbi/x_twitter_scraper/models/x/community_retrieve_members_params.rbi +154 -0
  79. data/rbi/x_twitter_scraper/models/x/community_retrieve_moderators_params.rbi +154 -0
  80. data/rbi/x_twitter_scraper/models/x/list_retrieve_followers_params.rbi +160 -8
  81. data/rbi/x_twitter_scraper/models/x/list_retrieve_members_params.rbi +154 -0
  82. data/rbi/x_twitter_scraper/models/x/tweet_get_favoriters_params.rbi +160 -8
  83. data/rbi/x_twitter_scraper/models/x/tweet_get_quotes_params.rbi +209 -0
  84. data/rbi/x_twitter_scraper/models/x/tweet_get_replies_params.rbi +403 -20
  85. data/rbi/x_twitter_scraper/models/x/tweet_get_replies_response.rbi +3 -2
  86. data/rbi/x_twitter_scraper/models/x/tweet_get_retweeters_params.rbi +160 -8
  87. data/rbi/x_twitter_scraper/models/x/tweet_search_params.rbi +279 -16
  88. data/rbi/x_twitter_scraper/models/x/tweet_search_response.rbi +543 -0
  89. data/rbi/x_twitter_scraper/models/x/user_retrieve_followers_params.rbi +228 -12
  90. data/rbi/x_twitter_scraper/models/x/user_retrieve_followers_response.rbi +440 -0
  91. data/rbi/x_twitter_scraper/models/x/user_retrieve_followers_you_know_params.rbi +160 -8
  92. data/rbi/x_twitter_scraper/models/x/user_retrieve_following_params.rbi +228 -12
  93. data/rbi/x_twitter_scraper/models/x/user_retrieve_following_response.rbi +440 -0
  94. data/rbi/x_twitter_scraper/models/x/user_retrieve_likes_params.rbi +209 -0
  95. data/rbi/x_twitter_scraper/models/x/user_retrieve_media_params.rbi +209 -0
  96. data/rbi/x_twitter_scraper/models/x/user_retrieve_mentions_params.rbi +209 -0
  97. data/rbi/x_twitter_scraper/models/x/user_retrieve_replies_params.rbi +217 -8
  98. data/rbi/x_twitter_scraper/models/x/user_retrieve_search_params.rbi +154 -0
  99. data/rbi/x_twitter_scraper/models/x/user_retrieve_tweets_params.rbi +217 -8
  100. data/rbi/x_twitter_scraper/models/x/user_retrieve_verified_followers_params.rbi +248 -10
  101. data/rbi/x_twitter_scraper/models/x/user_retrieve_verified_followers_response.rbi +440 -0
  102. data/rbi/x_twitter_scraper/models/x/x_account.rbi +9 -15
  103. data/rbi/x_twitter_scraper/resources/credits.rbi +2 -2
  104. data/rbi/x_twitter_scraper/resources/draws.rbi +3 -2
  105. data/rbi/x_twitter_scraper/resources/events.rbi +5 -2
  106. data/rbi/x_twitter_scraper/resources/extractions.rbi +525 -83
  107. data/rbi/x_twitter_scraper/resources/guest_wallets.rbi +9 -13
  108. data/rbi/x_twitter_scraper/resources/support/attachments.rbi +35 -0
  109. data/rbi/x_twitter_scraper/resources/support.rbi +4 -0
  110. data/rbi/x_twitter_scraper/resources/x/communities.rbi +84 -0
  111. data/rbi/x_twitter_scraper/resources/x/lists.rbi +87 -4
  112. data/rbi/x_twitter_scraper/resources/x/tweets.rbi +307 -31
  113. data/rbi/x_twitter_scraper/resources/x/users.rbi +558 -34
  114. data/sig/x_twitter_scraper/models/error.rbs +16 -0
  115. data/sig/x_twitter_scraper/models/event_list_params.rbs +7 -0
  116. data/sig/x_twitter_scraper/models/extraction_estimate_cost_params.rbs +605 -1
  117. data/sig/x_twitter_scraper/models/extraction_estimate_cost_response.rbs +2 -0
  118. data/sig/x_twitter_scraper/models/extraction_export_results_params.rbs +127 -1
  119. data/sig/x_twitter_scraper/models/extraction_retrieve_params.rbs +74 -1
  120. data/sig/x_twitter_scraper/models/extraction_run_params.rbs +611 -1
  121. data/sig/x_twitter_scraper/models/extraction_run_response.rbs +29 -67
  122. data/sig/x_twitter_scraper/models/guest_wallet_create_response.rbs +4 -4
  123. data/sig/x_twitter_scraper/models/guest_wallet_topup_response.rbs +4 -4
  124. data/sig/x_twitter_scraper/models/monitor.rbs +29 -3
  125. data/sig/x_twitter_scraper/models/support/attachment_download_params.rbs +32 -0
  126. data/sig/x_twitter_scraper/models/x/community_retrieve_members_params.rbs +103 -1
  127. data/sig/x_twitter_scraper/models/x/community_retrieve_moderators_params.rbs +102 -1
  128. data/sig/x_twitter_scraper/models/x/list_retrieve_followers_params.rbs +103 -1
  129. data/sig/x_twitter_scraper/models/x/list_retrieve_members_params.rbs +103 -1
  130. data/sig/x_twitter_scraper/models/x/tweet_get_favoriters_params.rbs +103 -1
  131. data/sig/x_twitter_scraper/models/x/tweet_get_quotes_params.rbs +134 -1
  132. data/sig/x_twitter_scraper/models/x/tweet_get_replies_params.rbs +207 -2
  133. data/sig/x_twitter_scraper/models/x/tweet_get_retweeters_params.rbs +103 -1
  134. data/sig/x_twitter_scraper/models/x/tweet_search_params.rbs +154 -1
  135. data/sig/x_twitter_scraper/models/x/tweet_search_response.rbs +258 -0
  136. data/sig/x_twitter_scraper/models/x/user_retrieve_followers_params.rbs +119 -1
  137. data/sig/x_twitter_scraper/models/x/user_retrieve_followers_response.rbs +216 -0
  138. data/sig/x_twitter_scraper/models/x/user_retrieve_followers_you_know_params.rbs +103 -1
  139. data/sig/x_twitter_scraper/models/x/user_retrieve_following_params.rbs +119 -1
  140. data/sig/x_twitter_scraper/models/x/user_retrieve_following_response.rbs +216 -0
  141. data/sig/x_twitter_scraper/models/x/user_retrieve_likes_params.rbs +134 -1
  142. data/sig/x_twitter_scraper/models/x/user_retrieve_media_params.rbs +134 -1
  143. data/sig/x_twitter_scraper/models/x/user_retrieve_mentions_params.rbs +134 -1
  144. data/sig/x_twitter_scraper/models/x/user_retrieve_replies_params.rbs +134 -1
  145. data/sig/x_twitter_scraper/models/x/user_retrieve_search_params.rbs +102 -1
  146. data/sig/x_twitter_scraper/models/x/user_retrieve_tweets_params.rbs +134 -1
  147. data/sig/x_twitter_scraper/models/x/user_retrieve_verified_followers_params.rbs +137 -1
  148. data/sig/x_twitter_scraper/models/x/user_retrieve_verified_followers_response.rbs +216 -0
  149. data/sig/x_twitter_scraper/resources/events.rbs +1 -0
  150. data/sig/x_twitter_scraper/resources/extractions.rbs +137 -0
  151. data/sig/x_twitter_scraper/resources/support/attachments.rbs +15 -0
  152. data/sig/x_twitter_scraper/resources/support.rbs +2 -0
  153. data/sig/x_twitter_scraper/resources/x/communities.rbs +28 -0
  154. data/sig/x_twitter_scraper/resources/x/lists.rbs +28 -0
  155. data/sig/x_twitter_scraper/resources/x/tweets.rbs +93 -1
  156. data/sig/x_twitter_scraper/resources/x/users.rbs +173 -3
  157. metadata +19 -1
@@ -10,14 +10,22 @@ module XTwitterScraper
10
10
  class Extractions
11
11
  # Get extraction results
12
12
  #
13
- # @overload retrieve(id, cursor: nil, limit: nil, request_options: {})
13
+ # @overload retrieve(id, cursor: nil, field_style: nil, include_raw: nil, limit: nil, output_mode: nil, output_preset: nil, request_options: {})
14
14
  #
15
15
  # @param id [String] Extraction public ID (UUID)
16
16
  #
17
- # @param cursor [String] Cursor for keyset pagination from prior response next_cursor
17
+ # @param cursor [String] Previous nextCursor.
18
+ #
19
+ # @param field_style [Symbol, XTwitterScraper::Models::ExtractionRetrieveParams::FieldStyle] Preserve source keys or convert result field names.
20
+ #
21
+ # @param include_raw [Boolean] Use outputMode=raw instead.
18
22
  #
19
23
  # @param limit [Integer] Maximum number of results to return (1-1000, default 100)
20
24
  #
25
+ # @param output_mode [Symbol, XTwitterScraper::Models::ExtractionRetrieveParams::OutputMode] Select compact, full, or raw-compatible result fields.
26
+ #
27
+ # @param output_preset [Symbol, XTwitterScraper::Models::ExtractionRetrieveParams::OutputPreset] Keep enrichment nested or merge it into each result.
28
+ #
21
29
  # @param request_options [XTwitterScraper::RequestOptions, Hash{Symbol=>Object}, nil]
22
30
  #
23
31
  # @return [XTwitterScraper::Models::ExtractionRetrieveResponse]
@@ -29,7 +37,12 @@ module XTwitterScraper
29
37
  @client.request(
30
38
  method: :get,
31
39
  path: ["extractions/%1$s", id],
32
- query: query,
40
+ query: query.transform_keys(
41
+ field_style: "fieldStyle",
42
+ include_raw: "includeRaw",
43
+ output_mode: "outputMode",
44
+ output_preset: "outputPreset"
45
+ ),
33
46
  model: XTwitterScraper::Models::ExtractionRetrieveResponse,
34
47
  options: options
35
48
  )
@@ -42,7 +55,7 @@ module XTwitterScraper
42
55
  #
43
56
  # @overload list(cursor: nil, limit: nil, status: nil, tool_type: nil, request_options: {})
44
57
  #
45
- # @param cursor [String] Cursor for keyset pagination from prior response next_cursor
58
+ # @param cursor [String] Previous nextCursor.
46
59
  #
47
60
  # @param limit [Integer] Maximum number of items to return (1-100, default 50). For paid per-result endpo
48
61
  #
@@ -72,85 +85,199 @@ module XTwitterScraper
72
85
  #
73
86
  # Estimate extraction cost
74
87
  #
75
- # @overload estimate_cost(tool_type:, advanced_query: nil, any_words: nil, bounding_box: nil, cashtags: nil, conversation_id: nil, exact_phrase: nil, exclude_words: nil, from_user: nil, hashtags: nil, in_reply_to_tweet_id: nil, language: nil, list_id: nil, media_type: nil, mentioning: nil, min_faves: nil, min_quotes: nil, min_replies: nil, min_retweets: nil, place: nil, place_country: nil, point_radius: nil, quotes: nil, quotes_of_tweet_id: nil, replies: nil, results_limit: nil, retweets: nil, retweets_of_tweet_id: nil, search_query: nil, since_date: nil, target_community_id: nil, target_list_id: nil, target_space_id: nil, target_tweet_id: nil, target_username: nil, to_user: nil, until_date: nil, url: nil, verified_only: nil, request_options: {})
88
+ # @overload estimate_cost(tool_type:, advanced_query: nil, any_words: nil, bio_contains: nil, blue_verified_only: nil, bounding_box: nil, card_name: nil, cashtags: nil, collection_strategy: nil, conversation_id: nil, dedupe_across_targets: nil, dedupe_mode: nil, exact_phrase: nil, exclude_original_author: nil, exclude_source: nil, exclude_words: nil, from_user: nil, geocode: nil, hashtags: nil, has_location: nil, has_media_only: nil, has_website: nil, include_original_post: nil, include_search_terms: nil, include_target_metadata: nil, in_reply_to_tweet_id: nil, language: nil, list_id: nil, location_contains: nil, max_depth: nil, max_followers: nil, max_following: nil, max_id: nil, max_items_per_target: nil, max_likes: nil, max_pages_per_target: nil, max_posts: nil, max_quotes: nil, max_replies: nil, max_retweets: nil, media_type: nil, mentioning: nil, min_account_age_days: nil, min_bookmarks: nil, min_faves: nil, min_followers: nil, min_following: nil, min_posts: nil, min_quotes: nil, min_replies: nil, min_retweets: nil, min_views: nil, native_retweets: nil, near: nil, news: nil, overlap_mode: nil, place: nil, place_country: nil, point_radius: nil, query_type: nil, quotes: nil, quotes_of_tweet_id: nil, relation_targets: nil, replies: nil, results_limit: nil, retweets: nil, retweets_of_tweet_id: nil, safe: nil, scope: nil, search_queries: nil, search_query: nil, since_date: nil, since_id: nil, since_time: nil, sort: nil, source: nil, start_cursor: nil, target_community_id: nil, target_community_ids: nil, target_list_id: nil, target_list_ids: nil, targets: nil, target_space_id: nil, target_tweet_id: nil, target_tweet_ids: nil, target_username: nil, target_usernames: nil, to_user: nil, until_date: nil, until_time: nil, url: nil, username_contains: nil, verified_only: nil, verified_type: nil, within: nil, within_time: nil, request_options: {})
76
89
  #
77
90
  # @param tool_type [Symbol, XTwitterScraper::Models::ExtractionEstimateCostParams::ToolType] Identifier for the extraction tool used to run a job.
78
91
  #
79
- # @param advanced_query [String] Raw advanced query string appended to the estimate (tweet_search_extractor)
92
+ # @param advanced_query [String] Raw advanced search query appended as-is (tweet_search_extractor)
93
+ #
94
+ # @param any_words [String] Words or quoted phrases where any one can match. Separate with spaces, commas, o
95
+ #
96
+ # @param bio_contains [String] Bio terms separated by commas or lines.
97
+ #
98
+ # @param blue_verified_only [Boolean] Return only Blue-verified Tweet authors.
99
+ #
100
+ # @param bounding_box [String] Geo bounding box, e.g. -74.1 40.6 -73.9 40.8 (tweet_search_extractor)
101
+ #
102
+ # @param card_name [String] Match the Tweet card name.
103
+ #
104
+ # @param cashtags [String] Cashtags separated by spaces, commas, or lines. (tweet_search_extractor)
105
+ #
106
+ # @param collection_strategy [Symbol, XTwitterScraper::Models::ExtractionEstimateCostParams::CollectionStrategy] Reply collection strategy.
107
+ #
108
+ # @param conversation_id [String] Conversation ID filter (tweet_search_extractor)
109
+ #
110
+ # @param dedupe_across_targets [Boolean] Merge duplicate results across collection targets.
111
+ #
112
+ # @param dedupe_mode [Symbol, XTwitterScraper::Models::ExtractionEstimateCostParams::DedupeMode] Keep target duplicates, first rows, or merged overlap.
113
+ #
114
+ # @param exact_phrase [String] Exact phrase to match (tweet_search_extractor)
115
+ #
116
+ # @param exclude_original_author [Boolean] Exclude replies from the source author.
117
+ #
118
+ # @param exclude_source [String] Exclude a source application.
119
+ #
120
+ # @param exclude_words [String] Words or quoted phrases to exclude. Separate with spaces, commas, or lines. (twe
121
+ #
122
+ # @param from_user [String] Filter by author username (tweet_search_extractor)
123
+ #
124
+ # @param geocode [String] Match latitude, longitude, and radius.
125
+ #
126
+ # @param hashtags [String] Hashtags separated by spaces, commas, or lines. (tweet_search_extractor)
127
+ #
128
+ # @param has_location [Boolean] Require a profile location.
129
+ #
130
+ # @param has_media_only [Boolean] Return only replies with media.
131
+ #
132
+ # @param has_website [Boolean] Require a profile website.
133
+ #
134
+ # @param include_original_post [Boolean] Include the source post in reply results.
135
+ #
136
+ # @param include_search_terms [Boolean] Add matching search terms to collection metadata.
137
+ #
138
+ # @param include_target_metadata [Boolean] Add source target metadata to each result.
139
+ #
140
+ # @param in_reply_to_tweet_id [String] Only replies to this tweet ID (tweet_search_extractor)
141
+ #
142
+ # @param language [String] Language code filter (tweet_search_extractor)
80
143
  #
81
- # @param any_words [String] Alternative words or quoted phrases for estimated results. Separate with spaces,
144
+ # @param list_id [String] Search within a list ID (tweet_search_extractor)
82
145
  #
83
- # @param bounding_box [String] Geo bounding box used for estimation, e.g. -74.1 40.6 -73.9 40.8 (tweet_search_e
146
+ # @param location_contains [String] Required profile location text.
84
147
  #
85
- # @param cashtags [String] Cashtags applied to the estimate, separated by spaces, commas, or lines.
148
+ # @param max_depth [Integer] Maximum nested reply depth.
86
149
  #
87
- # @param conversation_id [String] Conversation ID filter used for estimation (tweet_search_extractor)
150
+ # @param max_followers [Integer] Maximum follower count for profile results.
88
151
  #
89
- # @param exact_phrase [String] Exact phrase filter for search estimation
152
+ # @param max_following [Integer] Maximum following count for profile results.
90
153
  #
91
- # @param exclude_words [String] Words or quoted phrases excluded from estimated results. Separate with spaces, c
154
+ # @param max_id [String] Return Tweets older than this Tweet ID.
92
155
  #
93
- # @param from_user [String] Estimate only tweets from this author username (tweet_search_extractor)
156
+ # @param max_items_per_target [Integer] Maximum results collected for each target.
94
157
  #
95
- # @param hashtags [String] Hashtags applied to the estimate, separated by spaces, commas, or lines.
158
+ # @param max_likes [Integer] Maximum Tweet like count.
96
159
  #
97
- # @param in_reply_to_tweet_id [String] Estimate only replies to this tweet ID (tweet_search_extractor)
160
+ # @param max_pages_per_target [Integer] Reply pages collected for each target.
98
161
  #
99
- # @param language [String] Language code used for estimate filtering (tweet_search_extractor)
162
+ # @param max_posts [Integer] Maximum post count for profile results.
100
163
  #
101
- # @param list_id [String] Estimate search results within this list ID (tweet_search_extractor)
164
+ # @param max_quotes [Integer] Maximum Tweet quote count.
102
165
  #
103
- # @param media_type [Symbol, XTwitterScraper::Models::ExtractionEstimateCostParams::MediaType] Media type used for estimate filtering (tweet_search_extractor)
166
+ # @param max_replies [Integer] Maximum Tweet reply count.
104
167
  #
105
- # @param mentioning [String] Estimate tweets mentioning this username (tweet_search_extractor)
168
+ # @param max_retweets [Integer] Maximum Tweet repost count.
106
169
  #
107
- # @param min_faves [Integer] Minimum likes threshold for estimated results (tweet_search_extractor)
170
+ # @param media_type [Symbol, XTwitterScraper::Models::ExtractionEstimateCostParams::MediaType] Media type filter (tweet_search_extractor)
108
171
  #
109
- # @param min_quotes [Integer] Minimum quote count threshold for estimated results (tweet_search_extractor)
172
+ # @param mentioning [String] Filter tweets mentioning a username (tweet_search_extractor)
110
173
  #
111
- # @param min_replies [Integer] Minimum replies threshold for estimated results (tweet_search_extractor)
174
+ # @param min_account_age_days [Integer] Minimum profile age in days.
112
175
  #
113
- # @param min_retweets [Integer] Minimum retweets threshold for estimated results (tweet_search_extractor)
176
+ # @param min_bookmarks [Integer] Minimum Tweet bookmark count.
114
177
  #
115
- # @param place [String] Estimate search results within this place ID (tweet_search_extractor)
178
+ # @param min_faves [Integer] Minimum likes threshold (tweet_search_extractor)
116
179
  #
117
- # @param place_country [String] Estimate search results within this country code (tweet_search_extractor)
180
+ # @param min_followers [Integer] Minimum follower count for profile results.
118
181
  #
119
- # @param point_radius [String] Geo point radius used for estimation, e.g. -73.99 40.73 25mi (tweet_search_extra
182
+ # @param min_following [Integer] Minimum following count for profile results.
120
183
  #
121
- # @param quotes [Symbol, XTwitterScraper::Models::ExtractionEstimateCostParams::Quotes] Quote mode used for estimation (tweet_search_extractor)
184
+ # @param min_posts [Integer] Minimum post count for profile results.
122
185
  #
123
- # @param quotes_of_tweet_id [String] Estimate only quotes of this tweet ID (tweet_search_extractor)
186
+ # @param min_quotes [Integer] Minimum quote count threshold (tweet_search_extractor)
124
187
  #
125
- # @param replies [Symbol, XTwitterScraper::Models::ExtractionEstimateCostParams::Replies] Reply mode used for estimation (tweet_search_extractor)
188
+ # @param min_replies [Integer] Minimum replies threshold (tweet_search_extractor)
126
189
  #
127
- # @param results_limit [Integer] Maximum number of results to estimate. When set, the estimate caps projected res
190
+ # @param min_retweets [Integer] Minimum retweets threshold (tweet_search_extractor)
191
+ #
192
+ # @param min_views [Integer] Minimum Tweet view count.
193
+ #
194
+ # @param native_retweets [Boolean] Only return native reposts.
128
195
  #
129
- # @param retweets [Symbol, XTwitterScraper::Models::ExtractionEstimateCostParams::Retweets] Retweet mode used for estimation (tweet_search_extractor)
196
+ # @param near [String] Match a place name.
130
197
  #
131
- # @param retweets_of_tweet_id [String] Estimate only retweets of this tweet ID (tweet_search_extractor)
198
+ # @param news [Boolean] Only return news results.
132
199
  #
133
- # @param search_query [String] Query used to price tweet_search_extractor or community_search.
200
+ # @param overlap_mode [Boolean] Shortcut for dedupeMode=merge.
134
201
  #
135
- # @param since_date [Date] Estimate start date in YYYY-MM-DD format (tweet_search_extractor)
202
+ # @param place [String] Search within a place ID (tweet_search_extractor)
136
203
  #
137
- # @param target_community_id [String] Community ID used to price community_post_extractor or community_search.
204
+ # @param place_country [String] Search within a country code (tweet_search_extractor)
138
205
  #
139
- # @param target_list_id [String] List ID used to price list_follower_explorer, list_member_extractor, or list_pos
206
+ # @param point_radius [String] Geo point radius, e.g. -73.99 40.73 25mi (tweet_search_extractor)
140
207
  #
141
- # @param target_space_id [String] Space ID used to price space_explorer.
208
+ # @param query_type [Symbol, XTwitterScraper::Models::ExtractionEstimateCostParams::QueryType] Search ranking applied to every query.
209
+ #
210
+ # @param quotes [Symbol, XTwitterScraper::Models::ExtractionEstimateCostParams::Quotes] Quote mode (tweet_search_extractor)
211
+ #
212
+ # @param quotes_of_tweet_id [String] Only quotes of this tweet ID (tweet_search_extractor)
213
+ #
214
+ # @param relation_targets [Array<XTwitterScraper::Models::ExtractionEstimateCostParams::RelationTarget>] Profile relations processed within one job.
215
+ #
216
+ # @param replies [Symbol, XTwitterScraper::Models::ExtractionEstimateCostParams::Replies] Reply mode (tweet_search_extractor)
217
+ #
218
+ # @param results_limit [Integer] Maximum number of results to extract. When set, the extraction stops after reach
219
+ #
220
+ # @param retweets [Symbol, XTwitterScraper::Models::ExtractionEstimateCostParams::Retweets] Retweet mode (tweet_search_extractor)
221
+ #
222
+ # @param retweets_of_tweet_id [String] Only retweets of this tweet ID (tweet_search_extractor)
223
+ #
224
+ # @param safe [Boolean] Enable the safe-search filter.
225
+ #
226
+ # @param scope [Symbol, XTwitterScraper::Models::ExtractionEstimateCostParams::Scope] Reply depth scope.
227
+ #
228
+ # @param search_queries [Array<String>] Search queries processed as one collection job.
229
+ #
230
+ # @param search_query [String] Required for tweet_search_extractor & community_search.
231
+ #
232
+ # @param since_date [Date] Start date YYYY-MM-DD (tweet_search_extractor)
233
+ #
234
+ # @param since_id [String] Return Tweets newer than this Tweet ID.
235
+ #
236
+ # @param since_time [Time, Integer] Reply start time as ISO 8601 or Unix seconds.
237
+ #
238
+ # @param sort [Symbol, XTwitterScraper::Models::ExtractionEstimateCostParams::Sort] Reply result order.
239
+ #
240
+ # @param source [String] Match the source application.
241
+ #
242
+ # @param start_cursor [String] Resume one reply target from this cursor.
243
+ #
244
+ # @param target_community_id [String] Required for community_post_extractor & community_search.
245
+ #
246
+ # @param target_community_ids [Array<String>] Community IDs processed as one collection job.
247
+ #
248
+ # @param target_list_id [String] Required for list_follower_explorer, list_member_extractor & list_post_extractor
249
+ #
250
+ # @param target_list_ids [Array<String>] List IDs processed as one collection job.
251
+ #
252
+ # @param targets [Array<String, XTwitterScraper::Models::ExtractionEstimateCostParams::Target::UnionMember1>] Mixed targets auto-routed within one job.
253
+ #
254
+ # @param target_space_id [String] Required for space_explorer.
142
255
  #
143
256
  # @param target_tweet_id [String]
144
257
  #
258
+ # @param target_tweet_ids [Array<String>] Tweet IDs processed as one collection job.
259
+ #
145
260
  # @param target_username [String]
146
261
  #
147
- # @param to_user [String] Estimate replies sent to this username (tweet_search_extractor)
262
+ # @param target_usernames [Array<String>] Usernames processed as one collection job.
148
263
  #
149
- # @param until_date [Date] Estimate end date in YYYY-MM-DD format (tweet_search_extractor)
264
+ # @param to_user [String] Filter replies sent to a username (tweet_search_extractor)
150
265
  #
151
- # @param url [String] URL substring or domain filter used for estimation (tweet_search_extractor)
266
+ # @param until_date [Date] End date YYYY-MM-DD (tweet_search_extractor)
267
+ #
268
+ # @param until_time [Time, Integer] Reply end time as ISO 8601 or Unix seconds.
269
+ #
270
+ # @param url [String] URL substring or domain filter (tweet_search_extractor)
271
+ #
272
+ # @param username_contains [String] Required username text.
152
273
  #
153
- # @param verified_only [Boolean] Estimate only verified authors (tweet_search_extractor)
274
+ # @param verified_only [Boolean] Only verified authors (tweet_search_extractor)
275
+ #
276
+ # @param verified_type [String] Exact profile verification type.
277
+ #
278
+ # @param within [String] Set the radius for the near filter.
279
+ #
280
+ # @param within_time [String] Match Tweets inside a recent time window.
154
281
  #
155
282
  # @param request_options [XTwitterScraper::RequestOptions, Hash{Symbol=>Object}, nil]
156
283
  #
@@ -170,12 +297,48 @@ module XTwitterScraper
170
297
 
171
298
  # Export extraction results
172
299
  #
173
- # @overload export_results(id, format_:, request_options: {})
300
+ # @overload export_results(id, format_:, has_description: nil, has_location: nil, has_media: nil, lang: nil, max_followers: nil, max_following: nil, max_posts: nil, min_followers: nil, min_following: nil, min_likes: nil, min_posts: nil, min_replies: nil, min_retweets: nil, min_views: nil, search: nil, since_date: nil, until_date: nil, verified: nil, request_options: {})
174
301
  #
175
302
  # @param id [String] Extraction public ID
176
303
  #
177
304
  # @param format_ [Symbol, XTwitterScraper::Models::ExtractionExportResultsParams::Format] Export file format
178
305
  #
306
+ # @param has_description [Boolean] Require a non-empty description.
307
+ #
308
+ # @param has_location [Boolean] Require a non-empty location.
309
+ #
310
+ # @param has_media [Boolean] Require media.
311
+ #
312
+ # @param lang [String] Filter by language code.
313
+ #
314
+ # @param max_followers [Integer] Maximum follower count.
315
+ #
316
+ # @param max_following [Integer] Maximum following count.
317
+ #
318
+ # @param max_posts [Integer] Maximum post count.
319
+ #
320
+ # @param min_followers [Integer] Minimum follower count.
321
+ #
322
+ # @param min_following [Integer] Minimum following count.
323
+ #
324
+ # @param min_likes [Integer] Minimum like count.
325
+ #
326
+ # @param min_posts [Integer] Minimum post count.
327
+ #
328
+ # @param min_replies [Integer] Minimum reply count.
329
+ #
330
+ # @param min_retweets [Integer] Minimum repost count.
331
+ #
332
+ # @param min_views [Integer] Minimum view count.
333
+ #
334
+ # @param search [String] Search exported result text.
335
+ #
336
+ # @param since_date [Date] Include results on or after this date.
337
+ #
338
+ # @param until_date [Date] Include results on or before this date.
339
+ #
340
+ # @param verified [Boolean] Filter by verified status.
341
+ #
179
342
  # @param request_options [XTwitterScraper::RequestOptions, Hash{Symbol=>Object}, nil]
180
343
  #
181
344
  # @return [StringIO]
@@ -187,7 +350,24 @@ module XTwitterScraper
187
350
  @client.request(
188
351
  method: :get,
189
352
  path: ["extractions/%1$s/export", id],
190
- query: query.transform_keys(format_: "format"),
353
+ query: query.transform_keys(
354
+ format_: "format",
355
+ has_description: "hasDescription",
356
+ has_location: "hasLocation",
357
+ has_media: "hasMedia",
358
+ max_followers: "maxFollowers",
359
+ max_following: "maxFollowing",
360
+ max_posts: "maxPosts",
361
+ min_followers: "minFollowers",
362
+ min_following: "minFollowing",
363
+ min_likes: "minLikes",
364
+ min_posts: "minPosts",
365
+ min_replies: "minReplies",
366
+ min_retweets: "minRetweets",
367
+ min_views: "minViews",
368
+ since_date: "sinceDate",
369
+ until_date: "untilDate"
370
+ ),
191
371
  headers: {"accept" => "application/octet-stream"},
192
372
  model: StringIO,
193
373
  options: options
@@ -199,85 +379,201 @@ module XTwitterScraper
199
379
  #
200
380
  # Run extraction
201
381
  #
202
- # @overload run(tool_type:, advanced_query: nil, any_words: nil, bounding_box: nil, cashtags: nil, conversation_id: nil, exact_phrase: nil, exclude_words: nil, from_user: nil, hashtags: nil, in_reply_to_tweet_id: nil, language: nil, list_id: nil, media_type: nil, mentioning: nil, min_faves: nil, min_quotes: nil, min_replies: nil, min_retweets: nil, place: nil, place_country: nil, point_radius: nil, quotes: nil, quotes_of_tweet_id: nil, replies: nil, results_limit: nil, retweets: nil, retweets_of_tweet_id: nil, search_query: nil, since_date: nil, target_community_id: nil, target_list_id: nil, target_space_id: nil, target_tweet_id: nil, target_username: nil, to_user: nil, until_date: nil, url: nil, verified_only: nil, request_options: {})
382
+ # @overload run(tool_type:, dry_run: nil, advanced_query: nil, any_words: nil, bio_contains: nil, blue_verified_only: nil, bounding_box: nil, card_name: nil, cashtags: nil, collection_strategy: nil, conversation_id: nil, dedupe_across_targets: nil, dedupe_mode: nil, exact_phrase: nil, exclude_original_author: nil, exclude_source: nil, exclude_words: nil, from_user: nil, geocode: nil, hashtags: nil, has_location: nil, has_media_only: nil, has_website: nil, include_original_post: nil, include_search_terms: nil, include_target_metadata: nil, in_reply_to_tweet_id: nil, language: nil, list_id: nil, location_contains: nil, max_depth: nil, max_followers: nil, max_following: nil, max_id: nil, max_items_per_target: nil, max_likes: nil, max_pages_per_target: nil, max_posts: nil, max_quotes: nil, max_replies: nil, max_retweets: nil, media_type: nil, mentioning: nil, min_account_age_days: nil, min_bookmarks: nil, min_faves: nil, min_followers: nil, min_following: nil, min_posts: nil, min_quotes: nil, min_replies: nil, min_retweets: nil, min_views: nil, native_retweets: nil, near: nil, news: nil, overlap_mode: nil, place: nil, place_country: nil, point_radius: nil, query_type: nil, quotes: nil, quotes_of_tweet_id: nil, relation_targets: nil, replies: nil, results_limit: nil, retweets: nil, retweets_of_tweet_id: nil, safe: nil, scope: nil, search_queries: nil, search_query: nil, since_date: nil, since_id: nil, since_time: nil, sort: nil, source: nil, start_cursor: nil, target_community_id: nil, target_community_ids: nil, target_list_id: nil, target_list_ids: nil, targets: nil, target_space_id: nil, target_tweet_id: nil, target_tweet_ids: nil, target_username: nil, target_usernames: nil, to_user: nil, until_date: nil, until_time: nil, url: nil, username_contains: nil, verified_only: nil, verified_type: nil, within: nil, within_time: nil, request_options: {})
203
383
  #
204
- # @param tool_type [Symbol, XTwitterScraper::Models::ExtractionRunParams::ToolType] Identifier for the extraction tool used to run a job.
384
+ # @param tool_type [Symbol, XTwitterScraper::Models::ExtractionRunParams::ToolType] Body param: Identifier for the extraction tool used to run a job.
205
385
  #
206
- # @param advanced_query [String] Raw advanced search query appended as-is (tweet_search_extractor)
386
+ # @param dry_run [Boolean] Query param: Estimate cost without creating an extraction.
207
387
  #
208
- # @param any_words [String] Words or quoted phrases where any one can match. Separate with spaces, commas, o
388
+ # @param advanced_query [String] Body param: Raw advanced search query appended as-is (tweet_search_extractor)
209
389
  #
210
- # @param bounding_box [String] Geo bounding box, e.g. -74.1 40.6 -73.9 40.8 (tweet_search_extractor)
390
+ # @param any_words [String] Body param: Words or quoted phrases where any one can match. Separate with space
211
391
  #
212
- # @param cashtags [String] Cashtags separated by spaces, commas, or lines. (tweet_search_extractor)
392
+ # @param bio_contains [String] Body param: Bio terms separated by commas or lines.
213
393
  #
214
- # @param conversation_id [String] Conversation ID filter (tweet_search_extractor)
394
+ # @param blue_verified_only [Boolean] Body param: Return only Blue-verified Tweet authors.
215
395
  #
216
- # @param exact_phrase [String] Exact phrase to match (tweet_search_extractor)
396
+ # @param bounding_box [String] Body param: Geo bounding box, e.g. -74.1 40.6 -73.9 40.8 (tweet_search_extractor
217
397
  #
218
- # @param exclude_words [String] Words or quoted phrases to exclude. Separate with spaces, commas, or lines. (twe
398
+ # @param card_name [String] Body param: Match the Tweet card name.
219
399
  #
220
- # @param from_user [String] Filter by author username (tweet_search_extractor)
400
+ # @param cashtags [String] Body param: Cashtags separated by spaces, commas, or lines. (tweet_search_extrac
221
401
  #
222
- # @param hashtags [String] Hashtags separated by spaces, commas, or lines. (tweet_search_extractor)
402
+ # @param collection_strategy [Symbol, XTwitterScraper::Models::ExtractionRunParams::CollectionStrategy] Body param: Reply collection strategy.
223
403
  #
224
- # @param in_reply_to_tweet_id [String] Only replies to this tweet ID (tweet_search_extractor)
404
+ # @param conversation_id [String] Body param: Conversation ID filter (tweet_search_extractor)
225
405
  #
226
- # @param language [String] Language code filter (tweet_search_extractor)
406
+ # @param dedupe_across_targets [Boolean] Body param: Merge duplicate results across collection targets.
227
407
  #
228
- # @param list_id [String] Search within a list ID (tweet_search_extractor)
408
+ # @param dedupe_mode [Symbol, XTwitterScraper::Models::ExtractionRunParams::DedupeMode] Body param: Keep target duplicates, first rows, or merged overlap.
229
409
  #
230
- # @param media_type [Symbol, XTwitterScraper::Models::ExtractionRunParams::MediaType] Media type filter (tweet_search_extractor)
410
+ # @param exact_phrase [String] Body param: Exact phrase to match (tweet_search_extractor)
231
411
  #
232
- # @param mentioning [String] Filter tweets mentioning a username (tweet_search_extractor)
412
+ # @param exclude_original_author [Boolean] Body param: Exclude replies from the source author.
233
413
  #
234
- # @param min_faves [Integer] Minimum likes threshold (tweet_search_extractor)
414
+ # @param exclude_source [String] Body param: Exclude a source application.
235
415
  #
236
- # @param min_quotes [Integer] Minimum quote count threshold (tweet_search_extractor)
416
+ # @param exclude_words [String] Body param: Words or quoted phrases to exclude. Separate with spaces, commas, or
237
417
  #
238
- # @param min_replies [Integer] Minimum replies threshold (tweet_search_extractor)
418
+ # @param from_user [String] Body param: Filter by author username (tweet_search_extractor)
239
419
  #
240
- # @param min_retweets [Integer] Minimum retweets threshold (tweet_search_extractor)
420
+ # @param geocode [String] Body param: Match latitude, longitude, and radius.
241
421
  #
242
- # @param place [String] Search within a place ID (tweet_search_extractor)
422
+ # @param hashtags [String] Body param: Hashtags separated by spaces, commas, or lines. (tweet_search_extrac
243
423
  #
244
- # @param place_country [String] Search within a country code (tweet_search_extractor)
424
+ # @param has_location [Boolean] Body param: Require a profile location.
245
425
  #
246
- # @param point_radius [String] Geo point radius, e.g. -73.99 40.73 25mi (tweet_search_extractor)
426
+ # @param has_media_only [Boolean] Body param: Return only replies with media.
247
427
  #
248
- # @param quotes [Symbol, XTwitterScraper::Models::ExtractionRunParams::Quotes] Quote mode (tweet_search_extractor)
428
+ # @param has_website [Boolean] Body param: Require a profile website.
249
429
  #
250
- # @param quotes_of_tweet_id [String] Only quotes of this tweet ID (tweet_search_extractor)
430
+ # @param include_original_post [Boolean] Body param: Include the source post in reply results.
251
431
  #
252
- # @param replies [Symbol, XTwitterScraper::Models::ExtractionRunParams::Replies] Reply mode (tweet_search_extractor)
432
+ # @param include_search_terms [Boolean] Body param: Add matching search terms to collection metadata.
253
433
  #
254
- # @param results_limit [Integer] Maximum number of results to extract. When set, the extraction stops after reach
434
+ # @param include_target_metadata [Boolean] Body param: Add source target metadata to each result.
255
435
  #
256
- # @param retweets [Symbol, XTwitterScraper::Models::ExtractionRunParams::Retweets] Retweet mode (tweet_search_extractor)
436
+ # @param in_reply_to_tweet_id [String] Body param: Only replies to this tweet ID (tweet_search_extractor)
257
437
  #
258
- # @param retweets_of_tweet_id [String] Only retweets of this tweet ID (tweet_search_extractor)
438
+ # @param language [String] Body param: Language code filter (tweet_search_extractor)
259
439
  #
260
- # @param search_query [String] Required for tweet_search_extractor & community_search.
440
+ # @param list_id [String] Body param: Search within a list ID (tweet_search_extractor)
261
441
  #
262
- # @param since_date [Date] Start date YYYY-MM-DD (tweet_search_extractor)
442
+ # @param location_contains [String] Body param: Required profile location text.
263
443
  #
264
- # @param target_community_id [String] Required for community_post_extractor & community_search.
444
+ # @param max_depth [Integer] Body param: Maximum nested reply depth.
265
445
  #
266
- # @param target_list_id [String] Required for list_follower_explorer, list_member_extractor & list_post_extractor
446
+ # @param max_followers [Integer] Body param: Maximum follower count for profile results.
267
447
  #
268
- # @param target_space_id [String] Required for space_explorer.
448
+ # @param max_following [Integer] Body param: Maximum following count for profile results.
269
449
  #
270
- # @param target_tweet_id [String]
450
+ # @param max_id [String] Body param: Return Tweets older than this Tweet ID.
271
451
  #
272
- # @param target_username [String]
452
+ # @param max_items_per_target [Integer] Body param: Maximum results collected for each target.
273
453
  #
274
- # @param to_user [String] Filter replies sent to a username (tweet_search_extractor)
454
+ # @param max_likes [Integer] Body param: Maximum Tweet like count.
275
455
  #
276
- # @param until_date [Date] End date YYYY-MM-DD (tweet_search_extractor)
456
+ # @param max_pages_per_target [Integer] Body param: Reply pages collected for each target.
277
457
  #
278
- # @param url [String] URL substring or domain filter (tweet_search_extractor)
458
+ # @param max_posts [Integer] Body param: Maximum post count for profile results.
279
459
  #
280
- # @param verified_only [Boolean] Only verified authors (tweet_search_extractor)
460
+ # @param max_quotes [Integer] Body param: Maximum Tweet quote count.
461
+ #
462
+ # @param max_replies [Integer] Body param: Maximum Tweet reply count.
463
+ #
464
+ # @param max_retweets [Integer] Body param: Maximum Tweet repost count.
465
+ #
466
+ # @param media_type [Symbol, XTwitterScraper::Models::ExtractionRunParams::MediaType] Body param: Media type filter (tweet_search_extractor)
467
+ #
468
+ # @param mentioning [String] Body param: Filter tweets mentioning a username (tweet_search_extractor)
469
+ #
470
+ # @param min_account_age_days [Integer] Body param: Minimum profile age in days.
471
+ #
472
+ # @param min_bookmarks [Integer] Body param: Minimum Tweet bookmark count.
473
+ #
474
+ # @param min_faves [Integer] Body param: Minimum likes threshold (tweet_search_extractor)
475
+ #
476
+ # @param min_followers [Integer] Body param: Minimum follower count for profile results.
477
+ #
478
+ # @param min_following [Integer] Body param: Minimum following count for profile results.
479
+ #
480
+ # @param min_posts [Integer] Body param: Minimum post count for profile results.
481
+ #
482
+ # @param min_quotes [Integer] Body param: Minimum quote count threshold (tweet_search_extractor)
483
+ #
484
+ # @param min_replies [Integer] Body param: Minimum replies threshold (tweet_search_extractor)
485
+ #
486
+ # @param min_retweets [Integer] Body param: Minimum retweets threshold (tweet_search_extractor)
487
+ #
488
+ # @param min_views [Integer] Body param: Minimum Tweet view count.
489
+ #
490
+ # @param native_retweets [Boolean] Body param: Only return native reposts.
491
+ #
492
+ # @param near [String] Body param: Match a place name.
493
+ #
494
+ # @param news [Boolean] Body param: Only return news results.
495
+ #
496
+ # @param overlap_mode [Boolean] Body param: Shortcut for dedupeMode=merge.
497
+ #
498
+ # @param place [String] Body param: Search within a place ID (tweet_search_extractor)
499
+ #
500
+ # @param place_country [String] Body param: Search within a country code (tweet_search_extractor)
501
+ #
502
+ # @param point_radius [String] Body param: Geo point radius, e.g. -73.99 40.73 25mi (tweet_search_extractor)
503
+ #
504
+ # @param query_type [Symbol, XTwitterScraper::Models::ExtractionRunParams::QueryType] Body param: Search ranking applied to every query.
505
+ #
506
+ # @param quotes [Symbol, XTwitterScraper::Models::ExtractionRunParams::Quotes] Body param: Quote mode (tweet_search_extractor)
507
+ #
508
+ # @param quotes_of_tweet_id [String] Body param: Only quotes of this tweet ID (tweet_search_extractor)
509
+ #
510
+ # @param relation_targets [Array<XTwitterScraper::Models::ExtractionRunParams::RelationTarget>] Body param: Profile relations processed within one job.
511
+ #
512
+ # @param replies [Symbol, XTwitterScraper::Models::ExtractionRunParams::Replies] Body param: Reply mode (tweet_search_extractor)
513
+ #
514
+ # @param results_limit [Integer] Body param: Maximum number of results to extract. When set, the extraction stops
515
+ #
516
+ # @param retweets [Symbol, XTwitterScraper::Models::ExtractionRunParams::Retweets] Body param: Retweet mode (tweet_search_extractor)
517
+ #
518
+ # @param retweets_of_tweet_id [String] Body param: Only retweets of this tweet ID (tweet_search_extractor)
519
+ #
520
+ # @param safe [Boolean] Body param: Enable the safe-search filter.
521
+ #
522
+ # @param scope [Symbol, XTwitterScraper::Models::ExtractionRunParams::Scope] Body param: Reply depth scope.
523
+ #
524
+ # @param search_queries [Array<String>] Body param: Search queries processed as one collection job.
525
+ #
526
+ # @param search_query [String] Body param: Required for tweet_search_extractor & community_search.
527
+ #
528
+ # @param since_date [Date] Body param: Start date YYYY-MM-DD (tweet_search_extractor)
529
+ #
530
+ # @param since_id [String] Body param: Return Tweets newer than this Tweet ID.
531
+ #
532
+ # @param since_time [Time, Integer] Body param: Reply start time as ISO 8601 or Unix seconds.
533
+ #
534
+ # @param sort [Symbol, XTwitterScraper::Models::ExtractionRunParams::Sort] Body param: Reply result order.
535
+ #
536
+ # @param source [String] Body param: Match the source application.
537
+ #
538
+ # @param start_cursor [String] Body param: Resume one reply target from this cursor.
539
+ #
540
+ # @param target_community_id [String] Body param: Required for community_post_extractor & community_search.
541
+ #
542
+ # @param target_community_ids [Array<String>] Body param: Community IDs processed as one collection job.
543
+ #
544
+ # @param target_list_id [String] Body param: Required for list_follower_explorer, list_member_extractor & list_po
545
+ #
546
+ # @param target_list_ids [Array<String>] Body param: List IDs processed as one collection job.
547
+ #
548
+ # @param targets [Array<String, XTwitterScraper::Models::ExtractionRunParams::Target::UnionMember1>] Body param: Mixed targets auto-routed within one job.
549
+ #
550
+ # @param target_space_id [String] Body param: Required for space_explorer.
551
+ #
552
+ # @param target_tweet_id [String] Body param
553
+ #
554
+ # @param target_tweet_ids [Array<String>] Body param: Tweet IDs processed as one collection job.
555
+ #
556
+ # @param target_username [String] Body param
557
+ #
558
+ # @param target_usernames [Array<String>] Body param: Usernames processed as one collection job.
559
+ #
560
+ # @param to_user [String] Body param: Filter replies sent to a username (tweet_search_extractor)
561
+ #
562
+ # @param until_date [Date] Body param: End date YYYY-MM-DD (tweet_search_extractor)
563
+ #
564
+ # @param until_time [Time, Integer] Body param: Reply end time as ISO 8601 or Unix seconds.
565
+ #
566
+ # @param url [String] Body param: URL substring or domain filter (tweet_search_extractor)
567
+ #
568
+ # @param username_contains [String] Body param: Required username text.
569
+ #
570
+ # @param verified_only [Boolean] Body param: Only verified authors (tweet_search_extractor)
571
+ #
572
+ # @param verified_type [String] Body param: Exact profile verification type.
573
+ #
574
+ # @param within [String] Body param: Set the radius for the near filter.
575
+ #
576
+ # @param within_time [String] Body param: Match Tweets inside a recent time window.
281
577
  #
282
578
  # @param request_options [XTwitterScraper::RequestOptions, Hash{Symbol=>Object}, nil]
283
579
  #
@@ -285,11 +581,14 @@ module XTwitterScraper
285
581
  #
286
582
  # @see XTwitterScraper::Models::ExtractionRunParams
287
583
  def run(params)
584
+ query_params = [:dry_run]
288
585
  parsed, options = XTwitterScraper::ExtractionRunParams.dump_request(params)
586
+ query = XTwitterScraper::Internal::Util.encode_query_params(parsed.slice(*query_params))
289
587
  @client.request(
290
588
  method: :post,
291
589
  path: "extractions",
292
- body: parsed,
590
+ query: query,
591
+ body: parsed.except(*query_params),
293
592
  model: XTwitterScraper::Models::ExtractionRunResponse,
294
593
  options: options
295
594
  )