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
@@ -20,82 +20,255 @@ module XTwitterScraper
20
20
  api_name: :toolType
21
21
 
22
22
  # @!attribute advanced_query
23
- # Raw advanced query string appended to the estimate (tweet_search_extractor)
23
+ # Raw advanced search query appended as-is (tweet_search_extractor)
24
24
  #
25
25
  # @return [String, nil]
26
26
  optional :advanced_query, String, api_name: :advancedQuery
27
27
 
28
28
  # @!attribute any_words
29
- # Alternative words or quoted phrases for estimated results. Separate with spaces,
30
- # commas, or lines.
29
+ # Words or quoted phrases where any one can match. Separate with spaces, commas,
30
+ # or lines. (tweet_search_extractor)
31
31
  #
32
32
  # @return [String, nil]
33
33
  optional :any_words, String, api_name: :anyWords
34
34
 
35
+ # @!attribute bio_contains
36
+ # Bio terms separated by commas or lines.
37
+ #
38
+ # @return [String, nil]
39
+ optional :bio_contains, String, api_name: :bioContains
40
+
41
+ # @!attribute blue_verified_only
42
+ # Return only Blue-verified Tweet authors.
43
+ #
44
+ # @return [Boolean, nil]
45
+ optional :blue_verified_only, XTwitterScraper::Internal::Type::Boolean, api_name: :blueVerifiedOnly
46
+
35
47
  # @!attribute bounding_box
36
- # Geo bounding box used for estimation, e.g. -74.1 40.6 -73.9 40.8
37
- # (tweet_search_extractor)
48
+ # Geo bounding box, e.g. -74.1 40.6 -73.9 40.8 (tweet_search_extractor)
38
49
  #
39
50
  # @return [String, nil]
40
51
  optional :bounding_box, String, api_name: :boundingBox
41
52
 
53
+ # @!attribute card_name
54
+ # Match the Tweet card name.
55
+ #
56
+ # @return [String, nil]
57
+ optional :card_name, String, api_name: :cardName
58
+
42
59
  # @!attribute cashtags
43
- # Cashtags applied to the estimate, separated by spaces, commas, or lines.
60
+ # Cashtags separated by spaces, commas, or lines. (tweet_search_extractor)
44
61
  #
45
62
  # @return [String, nil]
46
63
  optional :cashtags, String
47
64
 
65
+ # @!attribute collection_strategy
66
+ # Reply collection strategy.
67
+ #
68
+ # @return [Symbol, XTwitterScraper::Models::ExtractionEstimateCostParams::CollectionStrategy, nil]
69
+ optional :collection_strategy,
70
+ enum: -> { XTwitterScraper::ExtractionEstimateCostParams::CollectionStrategy },
71
+ api_name: :collectionStrategy
72
+
48
73
  # @!attribute conversation_id
49
- # Conversation ID filter used for estimation (tweet_search_extractor)
74
+ # Conversation ID filter (tweet_search_extractor)
50
75
  #
51
76
  # @return [String, nil]
52
77
  optional :conversation_id, String, api_name: :conversationId
53
78
 
79
+ # @!attribute dedupe_across_targets
80
+ # Merge duplicate results across collection targets.
81
+ #
82
+ # @return [Boolean, nil]
83
+ optional :dedupe_across_targets,
84
+ XTwitterScraper::Internal::Type::Boolean,
85
+ api_name: :dedupeAcrossTargets
86
+
87
+ # @!attribute dedupe_mode
88
+ # Keep target duplicates, first rows, or merged overlap.
89
+ #
90
+ # @return [Symbol, XTwitterScraper::Models::ExtractionEstimateCostParams::DedupeMode, nil]
91
+ optional :dedupe_mode,
92
+ enum: -> { XTwitterScraper::ExtractionEstimateCostParams::DedupeMode },
93
+ api_name: :dedupeMode
94
+
54
95
  # @!attribute exact_phrase
55
- # Exact phrase filter for search estimation
96
+ # Exact phrase to match (tweet_search_extractor)
56
97
  #
57
98
  # @return [String, nil]
58
99
  optional :exact_phrase, String, api_name: :exactPhrase
59
100
 
101
+ # @!attribute exclude_original_author
102
+ # Exclude replies from the source author.
103
+ #
104
+ # @return [Boolean, nil]
105
+ optional :exclude_original_author,
106
+ XTwitterScraper::Internal::Type::Boolean,
107
+ api_name: :excludeOriginalAuthor
108
+
109
+ # @!attribute exclude_source
110
+ # Exclude a source application.
111
+ #
112
+ # @return [String, nil]
113
+ optional :exclude_source, String, api_name: :excludeSource
114
+
60
115
  # @!attribute exclude_words
61
- # Words or quoted phrases excluded from estimated results. Separate with spaces,
62
- # commas, or lines.
116
+ # Words or quoted phrases to exclude. Separate with spaces, commas, or lines.
117
+ # (tweet_search_extractor)
63
118
  #
64
119
  # @return [String, nil]
65
120
  optional :exclude_words, String, api_name: :excludeWords
66
121
 
67
122
  # @!attribute from_user
68
- # Estimate only tweets from this author username (tweet_search_extractor)
123
+ # Filter by author username (tweet_search_extractor)
69
124
  #
70
125
  # @return [String, nil]
71
126
  optional :from_user, String, api_name: :fromUser
72
127
 
128
+ # @!attribute geocode
129
+ # Match latitude, longitude, and radius.
130
+ #
131
+ # @return [String, nil]
132
+ optional :geocode, String
133
+
73
134
  # @!attribute hashtags
74
- # Hashtags applied to the estimate, separated by spaces, commas, or lines.
135
+ # Hashtags separated by spaces, commas, or lines. (tweet_search_extractor)
75
136
  #
76
137
  # @return [String, nil]
77
138
  optional :hashtags, String
78
139
 
140
+ # @!attribute has_location
141
+ # Require a profile location.
142
+ #
143
+ # @return [Boolean, nil]
144
+ optional :has_location, XTwitterScraper::Internal::Type::Boolean, api_name: :hasLocation
145
+
146
+ # @!attribute has_media_only
147
+ # Return only replies with media.
148
+ #
149
+ # @return [Boolean, nil]
150
+ optional :has_media_only, XTwitterScraper::Internal::Type::Boolean, api_name: :hasMediaOnly
151
+
152
+ # @!attribute has_website
153
+ # Require a profile website.
154
+ #
155
+ # @return [Boolean, nil]
156
+ optional :has_website, XTwitterScraper::Internal::Type::Boolean, api_name: :hasWebsite
157
+
158
+ # @!attribute include_original_post
159
+ # Include the source post in reply results.
160
+ #
161
+ # @return [Boolean, nil]
162
+ optional :include_original_post,
163
+ XTwitterScraper::Internal::Type::Boolean,
164
+ api_name: :includeOriginalPost
165
+
166
+ # @!attribute include_search_terms
167
+ # Add matching search terms to collection metadata.
168
+ #
169
+ # @return [Boolean, nil]
170
+ optional :include_search_terms, XTwitterScraper::Internal::Type::Boolean, api_name: :includeSearchTerms
171
+
172
+ # @!attribute include_target_metadata
173
+ # Add source target metadata to each result.
174
+ #
175
+ # @return [Boolean, nil]
176
+ optional :include_target_metadata,
177
+ XTwitterScraper::Internal::Type::Boolean,
178
+ api_name: :includeTargetMetadata
179
+
79
180
  # @!attribute in_reply_to_tweet_id
80
- # Estimate only replies to this tweet ID (tweet_search_extractor)
181
+ # Only replies to this tweet ID (tweet_search_extractor)
81
182
  #
82
183
  # @return [String, nil]
83
184
  optional :in_reply_to_tweet_id, String, api_name: :inReplyToTweetId
84
185
 
85
186
  # @!attribute language
86
- # Language code used for estimate filtering (tweet_search_extractor)
187
+ # Language code filter (tweet_search_extractor)
87
188
  #
88
189
  # @return [String, nil]
89
190
  optional :language, String
90
191
 
91
192
  # @!attribute list_id
92
- # Estimate search results within this list ID (tweet_search_extractor)
193
+ # Search within a list ID (tweet_search_extractor)
93
194
  #
94
195
  # @return [String, nil]
95
196
  optional :list_id, String, api_name: :listId
96
197
 
198
+ # @!attribute location_contains
199
+ # Required profile location text.
200
+ #
201
+ # @return [String, nil]
202
+ optional :location_contains, String, api_name: :locationContains
203
+
204
+ # @!attribute max_depth
205
+ # Maximum nested reply depth.
206
+ #
207
+ # @return [Integer, nil]
208
+ optional :max_depth, Integer, api_name: :maxDepth
209
+
210
+ # @!attribute max_followers
211
+ # Maximum follower count for profile results.
212
+ #
213
+ # @return [Integer, nil]
214
+ optional :max_followers, Integer, api_name: :maxFollowers
215
+
216
+ # @!attribute max_following
217
+ # Maximum following count for profile results.
218
+ #
219
+ # @return [Integer, nil]
220
+ optional :max_following, Integer, api_name: :maxFollowing
221
+
222
+ # @!attribute max_id
223
+ # Return Tweets older than this Tweet ID.
224
+ #
225
+ # @return [String, nil]
226
+ optional :max_id, String, api_name: :maxId
227
+
228
+ # @!attribute max_items_per_target
229
+ # Maximum results collected for each target.
230
+ #
231
+ # @return [Integer, nil]
232
+ optional :max_items_per_target, Integer, api_name: :maxItemsPerTarget
233
+
234
+ # @!attribute max_likes
235
+ # Maximum Tweet like count.
236
+ #
237
+ # @return [Integer, nil]
238
+ optional :max_likes, Integer, api_name: :maxLikes
239
+
240
+ # @!attribute max_pages_per_target
241
+ # Reply pages collected for each target.
242
+ #
243
+ # @return [Integer, nil]
244
+ optional :max_pages_per_target, Integer, api_name: :maxPagesPerTarget
245
+
246
+ # @!attribute max_posts
247
+ # Maximum post count for profile results.
248
+ #
249
+ # @return [Integer, nil]
250
+ optional :max_posts, Integer, api_name: :maxPosts
251
+
252
+ # @!attribute max_quotes
253
+ # Maximum Tweet quote count.
254
+ #
255
+ # @return [Integer, nil]
256
+ optional :max_quotes, Integer, api_name: :maxQuotes
257
+
258
+ # @!attribute max_replies
259
+ # Maximum Tweet reply count.
260
+ #
261
+ # @return [Integer, nil]
262
+ optional :max_replies, Integer, api_name: :maxReplies
263
+
264
+ # @!attribute max_retweets
265
+ # Maximum Tweet repost count.
266
+ #
267
+ # @return [Integer, nil]
268
+ optional :max_retweets, Integer, api_name: :maxRetweets
269
+
97
270
  # @!attribute media_type
98
- # Media type used for estimate filtering (tweet_search_extractor)
271
+ # Media type filter (tweet_search_extractor)
99
272
  #
100
273
  # @return [Symbol, XTwitterScraper::Models::ExtractionEstimateCostParams::MediaType, nil]
101
274
  optional :media_type,
@@ -103,118 +276,266 @@ module XTwitterScraper
103
276
  api_name: :mediaType
104
277
 
105
278
  # @!attribute mentioning
106
- # Estimate tweets mentioning this username (tweet_search_extractor)
279
+ # Filter tweets mentioning a username (tweet_search_extractor)
107
280
  #
108
281
  # @return [String, nil]
109
282
  optional :mentioning, String
110
283
 
284
+ # @!attribute min_account_age_days
285
+ # Minimum profile age in days.
286
+ #
287
+ # @return [Integer, nil]
288
+ optional :min_account_age_days, Integer, api_name: :minAccountAgeDays
289
+
290
+ # @!attribute min_bookmarks
291
+ # Minimum Tweet bookmark count.
292
+ #
293
+ # @return [Integer, nil]
294
+ optional :min_bookmarks, Integer, api_name: :minBookmarks
295
+
111
296
  # @!attribute min_faves
112
- # Minimum likes threshold for estimated results (tweet_search_extractor)
297
+ # Minimum likes threshold (tweet_search_extractor)
113
298
  #
114
299
  # @return [Integer, nil]
115
300
  optional :min_faves, Integer, api_name: :minFaves
116
301
 
302
+ # @!attribute min_followers
303
+ # Minimum follower count for profile results.
304
+ #
305
+ # @return [Integer, nil]
306
+ optional :min_followers, Integer, api_name: :minFollowers
307
+
308
+ # @!attribute min_following
309
+ # Minimum following count for profile results.
310
+ #
311
+ # @return [Integer, nil]
312
+ optional :min_following, Integer, api_name: :minFollowing
313
+
314
+ # @!attribute min_posts
315
+ # Minimum post count for profile results.
316
+ #
317
+ # @return [Integer, nil]
318
+ optional :min_posts, Integer, api_name: :minPosts
319
+
117
320
  # @!attribute min_quotes
118
- # Minimum quote count threshold for estimated results (tweet_search_extractor)
321
+ # Minimum quote count threshold (tweet_search_extractor)
119
322
  #
120
323
  # @return [Integer, nil]
121
324
  optional :min_quotes, Integer, api_name: :minQuotes
122
325
 
123
326
  # @!attribute min_replies
124
- # Minimum replies threshold for estimated results (tweet_search_extractor)
327
+ # Minimum replies threshold (tweet_search_extractor)
125
328
  #
126
329
  # @return [Integer, nil]
127
330
  optional :min_replies, Integer, api_name: :minReplies
128
331
 
129
332
  # @!attribute min_retweets
130
- # Minimum retweets threshold for estimated results (tweet_search_extractor)
333
+ # Minimum retweets threshold (tweet_search_extractor)
131
334
  #
132
335
  # @return [Integer, nil]
133
336
  optional :min_retweets, Integer, api_name: :minRetweets
134
337
 
338
+ # @!attribute min_views
339
+ # Minimum Tweet view count.
340
+ #
341
+ # @return [Integer, nil]
342
+ optional :min_views, Integer, api_name: :minViews
343
+
344
+ # @!attribute native_retweets
345
+ # Only return native reposts.
346
+ #
347
+ # @return [Boolean, nil]
348
+ optional :native_retweets, XTwitterScraper::Internal::Type::Boolean, api_name: :nativeRetweets
349
+
350
+ # @!attribute near
351
+ # Match a place name.
352
+ #
353
+ # @return [String, nil]
354
+ optional :near, String
355
+
356
+ # @!attribute news
357
+ # Only return news results.
358
+ #
359
+ # @return [Boolean, nil]
360
+ optional :news, XTwitterScraper::Internal::Type::Boolean
361
+
362
+ # @!attribute overlap_mode
363
+ # Shortcut for dedupeMode=merge.
364
+ #
365
+ # @return [Boolean, nil]
366
+ optional :overlap_mode, XTwitterScraper::Internal::Type::Boolean, api_name: :overlapMode
367
+
135
368
  # @!attribute place
136
- # Estimate search results within this place ID (tweet_search_extractor)
369
+ # Search within a place ID (tweet_search_extractor)
137
370
  #
138
371
  # @return [String, nil]
139
372
  optional :place, String
140
373
 
141
374
  # @!attribute place_country
142
- # Estimate search results within this country code (tweet_search_extractor)
375
+ # Search within a country code (tweet_search_extractor)
143
376
  #
144
377
  # @return [String, nil]
145
378
  optional :place_country, String, api_name: :placeCountry
146
379
 
147
380
  # @!attribute point_radius
148
- # Geo point radius used for estimation, e.g. -73.99 40.73 25mi
149
- # (tweet_search_extractor)
381
+ # Geo point radius, e.g. -73.99 40.73 25mi (tweet_search_extractor)
150
382
  #
151
383
  # @return [String, nil]
152
384
  optional :point_radius, String, api_name: :pointRadius
153
385
 
386
+ # @!attribute query_type
387
+ # Search ranking applied to every query.
388
+ #
389
+ # @return [Symbol, XTwitterScraper::Models::ExtractionEstimateCostParams::QueryType, nil]
390
+ optional :query_type,
391
+ enum: -> { XTwitterScraper::ExtractionEstimateCostParams::QueryType },
392
+ api_name: :queryType
393
+
154
394
  # @!attribute quotes
155
- # Quote mode used for estimation (tweet_search_extractor)
395
+ # Quote mode (tweet_search_extractor)
156
396
  #
157
397
  # @return [Symbol, XTwitterScraper::Models::ExtractionEstimateCostParams::Quotes, nil]
158
398
  optional :quotes, enum: -> { XTwitterScraper::ExtractionEstimateCostParams::Quotes }
159
399
 
160
400
  # @!attribute quotes_of_tweet_id
161
- # Estimate only quotes of this tweet ID (tweet_search_extractor)
401
+ # Only quotes of this tweet ID (tweet_search_extractor)
162
402
  #
163
403
  # @return [String, nil]
164
404
  optional :quotes_of_tweet_id, String, api_name: :quotesOfTweetId
165
405
 
406
+ # @!attribute relation_targets
407
+ # Profile relations processed within one job.
408
+ #
409
+ # @return [Array<XTwitterScraper::Models::ExtractionEstimateCostParams::RelationTarget>, nil]
410
+ optional :relation_targets,
411
+ -> {
412
+ XTwitterScraper::Internal::Type::ArrayOf[XTwitterScraper::ExtractionEstimateCostParams::RelationTarget]
413
+ },
414
+ api_name: :relationTargets
415
+
166
416
  # @!attribute replies
167
- # Reply mode used for estimation (tweet_search_extractor)
417
+ # Reply mode (tweet_search_extractor)
168
418
  #
169
419
  # @return [Symbol, XTwitterScraper::Models::ExtractionEstimateCostParams::Replies, nil]
170
420
  optional :replies, enum: -> { XTwitterScraper::ExtractionEstimateCostParams::Replies }
171
421
 
172
422
  # @!attribute results_limit
173
- # Maximum number of results to estimate. When set, the estimate caps projected
174
- # results to this value.
423
+ # Maximum number of results to extract. When set, the extraction stops after
424
+ # reaching this limit.
175
425
  #
176
426
  # @return [Integer, nil]
177
427
  optional :results_limit, Integer, api_name: :resultsLimit
178
428
 
179
429
  # @!attribute retweets
180
- # Retweet mode used for estimation (tweet_search_extractor)
430
+ # Retweet mode (tweet_search_extractor)
181
431
  #
182
432
  # @return [Symbol, XTwitterScraper::Models::ExtractionEstimateCostParams::Retweets, nil]
183
433
  optional :retweets, enum: -> { XTwitterScraper::ExtractionEstimateCostParams::Retweets }
184
434
 
185
435
  # @!attribute retweets_of_tweet_id
186
- # Estimate only retweets of this tweet ID (tweet_search_extractor)
436
+ # Only retweets of this tweet ID (tweet_search_extractor)
187
437
  #
188
438
  # @return [String, nil]
189
439
  optional :retweets_of_tweet_id, String, api_name: :retweetsOfTweetId
190
440
 
441
+ # @!attribute safe
442
+ # Enable the safe-search filter.
443
+ #
444
+ # @return [Boolean, nil]
445
+ optional :safe, XTwitterScraper::Internal::Type::Boolean
446
+
447
+ # @!attribute scope
448
+ # Reply depth scope.
449
+ #
450
+ # @return [Symbol, XTwitterScraper::Models::ExtractionEstimateCostParams::Scope, nil]
451
+ optional :scope, enum: -> { XTwitterScraper::ExtractionEstimateCostParams::Scope }
452
+
453
+ # @!attribute search_queries
454
+ # Search queries processed as one collection job.
455
+ #
456
+ # @return [Array<String>, nil]
457
+ optional :search_queries, XTwitterScraper::Internal::Type::ArrayOf[String], api_name: :searchQueries
458
+
191
459
  # @!attribute search_query
192
- # Query used to price tweet_search_extractor or community_search.
460
+ # Required for tweet_search_extractor & community_search.
193
461
  #
194
462
  # @return [String, nil]
195
463
  optional :search_query, String, api_name: :searchQuery
196
464
 
197
465
  # @!attribute since_date
198
- # Estimate start date in YYYY-MM-DD format (tweet_search_extractor)
466
+ # Start date YYYY-MM-DD (tweet_search_extractor)
199
467
  #
200
468
  # @return [Date, nil]
201
469
  optional :since_date, Date, api_name: :sinceDate
202
470
 
471
+ # @!attribute since_id
472
+ # Return Tweets newer than this Tweet ID.
473
+ #
474
+ # @return [String, nil]
475
+ optional :since_id, String, api_name: :sinceId
476
+
477
+ # @!attribute since_time
478
+ # Reply start time as ISO 8601 or Unix seconds.
479
+ #
480
+ # @return [Time, Integer, nil]
481
+ optional :since_time,
482
+ union: -> { XTwitterScraper::ExtractionEstimateCostParams::SinceTime },
483
+ api_name: :sinceTime
484
+
485
+ # @!attribute sort
486
+ # Reply result order.
487
+ #
488
+ # @return [Symbol, XTwitterScraper::Models::ExtractionEstimateCostParams::Sort, nil]
489
+ optional :sort, enum: -> { XTwitterScraper::ExtractionEstimateCostParams::Sort }
490
+
491
+ # @!attribute source
492
+ # Match the source application.
493
+ #
494
+ # @return [String, nil]
495
+ optional :source, String
496
+
497
+ # @!attribute start_cursor
498
+ # Resume one reply target from this cursor.
499
+ #
500
+ # @return [String, nil]
501
+ optional :start_cursor, String, api_name: :startCursor
502
+
203
503
  # @!attribute target_community_id
204
- # Community ID used to price community_post_extractor or community_search.
504
+ # Required for community_post_extractor & community_search.
205
505
  #
206
506
  # @return [String, nil]
207
507
  optional :target_community_id, String, api_name: :targetCommunityId
208
508
 
509
+ # @!attribute target_community_ids
510
+ # Community IDs processed as one collection job.
511
+ #
512
+ # @return [Array<String>, nil]
513
+ optional :target_community_ids,
514
+ XTwitterScraper::Internal::Type::ArrayOf[String],
515
+ api_name: :targetCommunityIds
516
+
209
517
  # @!attribute target_list_id
210
- # List ID used to price list_follower_explorer, list_member_extractor, or
518
+ # Required for list_follower_explorer, list_member_extractor &
211
519
  # list_post_extractor.
212
520
  #
213
521
  # @return [String, nil]
214
522
  optional :target_list_id, String, api_name: :targetListId
215
523
 
524
+ # @!attribute target_list_ids
525
+ # List IDs processed as one collection job.
526
+ #
527
+ # @return [Array<String>, nil]
528
+ optional :target_list_ids, XTwitterScraper::Internal::Type::ArrayOf[String], api_name: :targetListIds
529
+
530
+ # @!attribute targets
531
+ # Mixed targets auto-routed within one job.
532
+ #
533
+ # @return [Array<String, XTwitterScraper::Models::ExtractionEstimateCostParams::Target::UnionMember1>, nil]
534
+ optional :targets,
535
+ -> { XTwitterScraper::Internal::Type::ArrayOf[union: XTwitterScraper::ExtractionEstimateCostParams::Target] }
536
+
216
537
  # @!attribute target_space_id
217
- # Space ID used to price space_explorer.
538
+ # Required for space_explorer.
218
539
  #
219
540
  # @return [String, nil]
220
541
  optional :target_space_id, String, api_name: :targetSpaceId
@@ -224,116 +545,274 @@ module XTwitterScraper
224
545
  # @return [String, nil]
225
546
  optional :target_tweet_id, String, api_name: :targetTweetId
226
547
 
548
+ # @!attribute target_tweet_ids
549
+ # Tweet IDs processed as one collection job.
550
+ #
551
+ # @return [Array<String>, nil]
552
+ optional :target_tweet_ids, XTwitterScraper::Internal::Type::ArrayOf[String], api_name: :targetTweetIds
553
+
227
554
  # @!attribute target_username
228
555
  #
229
556
  # @return [String, nil]
230
557
  optional :target_username, String, api_name: :targetUsername
231
558
 
559
+ # @!attribute target_usernames
560
+ # Usernames processed as one collection job.
561
+ #
562
+ # @return [Array<String>, nil]
563
+ optional :target_usernames, XTwitterScraper::Internal::Type::ArrayOf[String], api_name: :targetUsernames
564
+
232
565
  # @!attribute to_user
233
- # Estimate replies sent to this username (tweet_search_extractor)
566
+ # Filter replies sent to a username (tweet_search_extractor)
234
567
  #
235
568
  # @return [String, nil]
236
569
  optional :to_user, String, api_name: :toUser
237
570
 
238
571
  # @!attribute until_date
239
- # Estimate end date in YYYY-MM-DD format (tweet_search_extractor)
572
+ # End date YYYY-MM-DD (tweet_search_extractor)
240
573
  #
241
574
  # @return [Date, nil]
242
575
  optional :until_date, Date, api_name: :untilDate
243
576
 
577
+ # @!attribute until_time
578
+ # Reply end time as ISO 8601 or Unix seconds.
579
+ #
580
+ # @return [Time, Integer, nil]
581
+ optional :until_time,
582
+ union: -> { XTwitterScraper::ExtractionEstimateCostParams::UntilTime },
583
+ api_name: :untilTime
584
+
244
585
  # @!attribute url
245
- # URL substring or domain filter used for estimation (tweet_search_extractor)
586
+ # URL substring or domain filter (tweet_search_extractor)
246
587
  #
247
588
  # @return [String, nil]
248
589
  optional :url, String
249
590
 
591
+ # @!attribute username_contains
592
+ # Required username text.
593
+ #
594
+ # @return [String, nil]
595
+ optional :username_contains, String, api_name: :usernameContains
596
+
250
597
  # @!attribute verified_only
251
- # Estimate only verified authors (tweet_search_extractor)
598
+ # Only verified authors (tweet_search_extractor)
252
599
  #
253
600
  # @return [Boolean, nil]
254
601
  optional :verified_only, XTwitterScraper::Internal::Type::Boolean, api_name: :verifiedOnly
255
602
 
256
- # @!method initialize(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: {})
603
+ # @!attribute verified_type
604
+ # Exact profile verification type.
605
+ #
606
+ # @return [String, nil]
607
+ optional :verified_type, String, api_name: :verifiedType
608
+
609
+ # @!attribute within
610
+ # Set the radius for the near filter.
611
+ #
612
+ # @return [String, nil]
613
+ optional :within, String
614
+
615
+ # @!attribute within_time
616
+ # Match Tweets inside a recent time window.
617
+ #
618
+ # @return [String, nil]
619
+ optional :within_time, String, api_name: :withinTime
620
+
621
+ # @!method initialize(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: {})
257
622
  # Some parameter documentations has been truncated, see
258
623
  # {XTwitterScraper::Models::ExtractionEstimateCostParams} for more details.
259
624
  #
260
625
  # @param tool_type [Symbol, XTwitterScraper::Models::ExtractionEstimateCostParams::ToolType] Identifier for the extraction tool used to run a job.
261
626
  #
262
- # @param advanced_query [String] Raw advanced query string appended to the estimate (tweet_search_extractor)
627
+ # @param advanced_query [String] Raw advanced search query appended as-is (tweet_search_extractor)
628
+ #
629
+ # @param any_words [String] Words or quoted phrases where any one can match. Separate with spaces, commas, o
630
+ #
631
+ # @param bio_contains [String] Bio terms separated by commas or lines.
632
+ #
633
+ # @param blue_verified_only [Boolean] Return only Blue-verified Tweet authors.
634
+ #
635
+ # @param bounding_box [String] Geo bounding box, e.g. -74.1 40.6 -73.9 40.8 (tweet_search_extractor)
636
+ #
637
+ # @param card_name [String] Match the Tweet card name.
638
+ #
639
+ # @param cashtags [String] Cashtags separated by spaces, commas, or lines. (tweet_search_extractor)
640
+ #
641
+ # @param collection_strategy [Symbol, XTwitterScraper::Models::ExtractionEstimateCostParams::CollectionStrategy] Reply collection strategy.
642
+ #
643
+ # @param conversation_id [String] Conversation ID filter (tweet_search_extractor)
644
+ #
645
+ # @param dedupe_across_targets [Boolean] Merge duplicate results across collection targets.
646
+ #
647
+ # @param dedupe_mode [Symbol, XTwitterScraper::Models::ExtractionEstimateCostParams::DedupeMode] Keep target duplicates, first rows, or merged overlap.
648
+ #
649
+ # @param exact_phrase [String] Exact phrase to match (tweet_search_extractor)
650
+ #
651
+ # @param exclude_original_author [Boolean] Exclude replies from the source author.
652
+ #
653
+ # @param exclude_source [String] Exclude a source application.
654
+ #
655
+ # @param exclude_words [String] Words or quoted phrases to exclude. Separate with spaces, commas, or lines. (twe
656
+ #
657
+ # @param from_user [String] Filter by author username (tweet_search_extractor)
658
+ #
659
+ # @param geocode [String] Match latitude, longitude, and radius.
263
660
  #
264
- # @param any_words [String] Alternative words or quoted phrases for estimated results. Separate with spaces,
661
+ # @param hashtags [String] Hashtags separated by spaces, commas, or lines. (tweet_search_extractor)
265
662
  #
266
- # @param bounding_box [String] Geo bounding box used for estimation, e.g. -74.1 40.6 -73.9 40.8 (tweet_search_e
663
+ # @param has_location [Boolean] Require a profile location.
267
664
  #
268
- # @param cashtags [String] Cashtags applied to the estimate, separated by spaces, commas, or lines.
665
+ # @param has_media_only [Boolean] Return only replies with media.
269
666
  #
270
- # @param conversation_id [String] Conversation ID filter used for estimation (tweet_search_extractor)
667
+ # @param has_website [Boolean] Require a profile website.
271
668
  #
272
- # @param exact_phrase [String] Exact phrase filter for search estimation
669
+ # @param include_original_post [Boolean] Include the source post in reply results.
273
670
  #
274
- # @param exclude_words [String] Words or quoted phrases excluded from estimated results. Separate with spaces, c
671
+ # @param include_search_terms [Boolean] Add matching search terms to collection metadata.
275
672
  #
276
- # @param from_user [String] Estimate only tweets from this author username (tweet_search_extractor)
673
+ # @param include_target_metadata [Boolean] Add source target metadata to each result.
277
674
  #
278
- # @param hashtags [String] Hashtags applied to the estimate, separated by spaces, commas, or lines.
675
+ # @param in_reply_to_tweet_id [String] Only replies to this tweet ID (tweet_search_extractor)
279
676
  #
280
- # @param in_reply_to_tweet_id [String] Estimate only replies to this tweet ID (tweet_search_extractor)
677
+ # @param language [String] Language code filter (tweet_search_extractor)
281
678
  #
282
- # @param language [String] Language code used for estimate filtering (tweet_search_extractor)
679
+ # @param list_id [String] Search within a list ID (tweet_search_extractor)
283
680
  #
284
- # @param list_id [String] Estimate search results within this list ID (tweet_search_extractor)
681
+ # @param location_contains [String] Required profile location text.
285
682
  #
286
- # @param media_type [Symbol, XTwitterScraper::Models::ExtractionEstimateCostParams::MediaType] Media type used for estimate filtering (tweet_search_extractor)
683
+ # @param max_depth [Integer] Maximum nested reply depth.
287
684
  #
288
- # @param mentioning [String] Estimate tweets mentioning this username (tweet_search_extractor)
685
+ # @param max_followers [Integer] Maximum follower count for profile results.
289
686
  #
290
- # @param min_faves [Integer] Minimum likes threshold for estimated results (tweet_search_extractor)
687
+ # @param max_following [Integer] Maximum following count for profile results.
291
688
  #
292
- # @param min_quotes [Integer] Minimum quote count threshold for estimated results (tweet_search_extractor)
689
+ # @param max_id [String] Return Tweets older than this Tweet ID.
293
690
  #
294
- # @param min_replies [Integer] Minimum replies threshold for estimated results (tweet_search_extractor)
691
+ # @param max_items_per_target [Integer] Maximum results collected for each target.
295
692
  #
296
- # @param min_retweets [Integer] Minimum retweets threshold for estimated results (tweet_search_extractor)
693
+ # @param max_likes [Integer] Maximum Tweet like count.
297
694
  #
298
- # @param place [String] Estimate search results within this place ID (tweet_search_extractor)
695
+ # @param max_pages_per_target [Integer] Reply pages collected for each target.
299
696
  #
300
- # @param place_country [String] Estimate search results within this country code (tweet_search_extractor)
697
+ # @param max_posts [Integer] Maximum post count for profile results.
301
698
  #
302
- # @param point_radius [String] Geo point radius used for estimation, e.g. -73.99 40.73 25mi (tweet_search_extra
699
+ # @param max_quotes [Integer] Maximum Tweet quote count.
303
700
  #
304
- # @param quotes [Symbol, XTwitterScraper::Models::ExtractionEstimateCostParams::Quotes] Quote mode used for estimation (tweet_search_extractor)
701
+ # @param max_replies [Integer] Maximum Tweet reply count.
305
702
  #
306
- # @param quotes_of_tweet_id [String] Estimate only quotes of this tweet ID (tweet_search_extractor)
703
+ # @param max_retweets [Integer] Maximum Tweet repost count.
307
704
  #
308
- # @param replies [Symbol, XTwitterScraper::Models::ExtractionEstimateCostParams::Replies] Reply mode used for estimation (tweet_search_extractor)
705
+ # @param media_type [Symbol, XTwitterScraper::Models::ExtractionEstimateCostParams::MediaType] Media type filter (tweet_search_extractor)
309
706
  #
310
- # @param results_limit [Integer] Maximum number of results to estimate. When set, the estimate caps projected res
707
+ # @param mentioning [String] Filter tweets mentioning a username (tweet_search_extractor)
311
708
  #
312
- # @param retweets [Symbol, XTwitterScraper::Models::ExtractionEstimateCostParams::Retweets] Retweet mode used for estimation (tweet_search_extractor)
709
+ # @param min_account_age_days [Integer] Minimum profile age in days.
313
710
  #
314
- # @param retweets_of_tweet_id [String] Estimate only retweets of this tweet ID (tweet_search_extractor)
711
+ # @param min_bookmarks [Integer] Minimum Tweet bookmark count.
315
712
  #
316
- # @param search_query [String] Query used to price tweet_search_extractor or community_search.
713
+ # @param min_faves [Integer] Minimum likes threshold (tweet_search_extractor)
317
714
  #
318
- # @param since_date [Date] Estimate start date in YYYY-MM-DD format (tweet_search_extractor)
715
+ # @param min_followers [Integer] Minimum follower count for profile results.
319
716
  #
320
- # @param target_community_id [String] Community ID used to price community_post_extractor or community_search.
717
+ # @param min_following [Integer] Minimum following count for profile results.
321
718
  #
322
- # @param target_list_id [String] List ID used to price list_follower_explorer, list_member_extractor, or list_pos
719
+ # @param min_posts [Integer] Minimum post count for profile results.
323
720
  #
324
- # @param target_space_id [String] Space ID used to price space_explorer.
721
+ # @param min_quotes [Integer] Minimum quote count threshold (tweet_search_extractor)
722
+ #
723
+ # @param min_replies [Integer] Minimum replies threshold (tweet_search_extractor)
724
+ #
725
+ # @param min_retweets [Integer] Minimum retweets threshold (tweet_search_extractor)
726
+ #
727
+ # @param min_views [Integer] Minimum Tweet view count.
728
+ #
729
+ # @param native_retweets [Boolean] Only return native reposts.
730
+ #
731
+ # @param near [String] Match a place name.
732
+ #
733
+ # @param news [Boolean] Only return news results.
734
+ #
735
+ # @param overlap_mode [Boolean] Shortcut for dedupeMode=merge.
736
+ #
737
+ # @param place [String] Search within a place ID (tweet_search_extractor)
738
+ #
739
+ # @param place_country [String] Search within a country code (tweet_search_extractor)
740
+ #
741
+ # @param point_radius [String] Geo point radius, e.g. -73.99 40.73 25mi (tweet_search_extractor)
742
+ #
743
+ # @param query_type [Symbol, XTwitterScraper::Models::ExtractionEstimateCostParams::QueryType] Search ranking applied to every query.
744
+ #
745
+ # @param quotes [Symbol, XTwitterScraper::Models::ExtractionEstimateCostParams::Quotes] Quote mode (tweet_search_extractor)
746
+ #
747
+ # @param quotes_of_tweet_id [String] Only quotes of this tweet ID (tweet_search_extractor)
748
+ #
749
+ # @param relation_targets [Array<XTwitterScraper::Models::ExtractionEstimateCostParams::RelationTarget>] Profile relations processed within one job.
750
+ #
751
+ # @param replies [Symbol, XTwitterScraper::Models::ExtractionEstimateCostParams::Replies] Reply mode (tweet_search_extractor)
752
+ #
753
+ # @param results_limit [Integer] Maximum number of results to extract. When set, the extraction stops after reach
754
+ #
755
+ # @param retweets [Symbol, XTwitterScraper::Models::ExtractionEstimateCostParams::Retweets] Retweet mode (tweet_search_extractor)
756
+ #
757
+ # @param retweets_of_tweet_id [String] Only retweets of this tweet ID (tweet_search_extractor)
758
+ #
759
+ # @param safe [Boolean] Enable the safe-search filter.
760
+ #
761
+ # @param scope [Symbol, XTwitterScraper::Models::ExtractionEstimateCostParams::Scope] Reply depth scope.
762
+ #
763
+ # @param search_queries [Array<String>] Search queries processed as one collection job.
764
+ #
765
+ # @param search_query [String] Required for tweet_search_extractor & community_search.
766
+ #
767
+ # @param since_date [Date] Start date YYYY-MM-DD (tweet_search_extractor)
768
+ #
769
+ # @param since_id [String] Return Tweets newer than this Tweet ID.
770
+ #
771
+ # @param since_time [Time, Integer] Reply start time as ISO 8601 or Unix seconds.
772
+ #
773
+ # @param sort [Symbol, XTwitterScraper::Models::ExtractionEstimateCostParams::Sort] Reply result order.
774
+ #
775
+ # @param source [String] Match the source application.
776
+ #
777
+ # @param start_cursor [String] Resume one reply target from this cursor.
778
+ #
779
+ # @param target_community_id [String] Required for community_post_extractor & community_search.
780
+ #
781
+ # @param target_community_ids [Array<String>] Community IDs processed as one collection job.
782
+ #
783
+ # @param target_list_id [String] Required for list_follower_explorer, list_member_extractor & list_post_extractor
784
+ #
785
+ # @param target_list_ids [Array<String>] List IDs processed as one collection job.
786
+ #
787
+ # @param targets [Array<String, XTwitterScraper::Models::ExtractionEstimateCostParams::Target::UnionMember1>] Mixed targets auto-routed within one job.
788
+ #
789
+ # @param target_space_id [String] Required for space_explorer.
325
790
  #
326
791
  # @param target_tweet_id [String]
327
792
  #
793
+ # @param target_tweet_ids [Array<String>] Tweet IDs processed as one collection job.
794
+ #
328
795
  # @param target_username [String]
329
796
  #
330
- # @param to_user [String] Estimate replies sent to this username (tweet_search_extractor)
797
+ # @param target_usernames [Array<String>] Usernames processed as one collection job.
331
798
  #
332
- # @param until_date [Date] Estimate end date in YYYY-MM-DD format (tweet_search_extractor)
799
+ # @param to_user [String] Filter replies sent to a username (tweet_search_extractor)
333
800
  #
334
- # @param url [String] URL substring or domain filter used for estimation (tweet_search_extractor)
801
+ # @param until_date [Date] End date YYYY-MM-DD (tweet_search_extractor)
335
802
  #
336
- # @param verified_only [Boolean] Estimate only verified authors (tweet_search_extractor)
803
+ # @param until_time [Time, Integer] Reply end time as ISO 8601 or Unix seconds.
804
+ #
805
+ # @param url [String] URL substring or domain filter (tweet_search_extractor)
806
+ #
807
+ # @param username_contains [String] Required username text.
808
+ #
809
+ # @param verified_only [Boolean] Only verified authors (tweet_search_extractor)
810
+ #
811
+ # @param verified_type [String] Exact profile verification type.
812
+ #
813
+ # @param within [String] Set the radius for the near filter.
814
+ #
815
+ # @param within_time [String] Match Tweets inside a recent time window.
337
816
  #
338
817
  # @param request_options [XTwitterScraper::RequestOptions, Hash{Symbol=>Object}]
339
818
 
@@ -369,7 +848,33 @@ module XTwitterScraper
369
848
  # @return [Array<Symbol>]
370
849
  end
371
850
 
372
- # Media type used for estimate filtering (tweet_search_extractor)
851
+ # Reply collection strategy.
852
+ module CollectionStrategy
853
+ extend XTwitterScraper::Internal::Type::Enum
854
+
855
+ AUTO = :auto
856
+ COMPLETE = :complete
857
+ DIRECT = :direct
858
+ SEARCH = :search
859
+ THREAD = :thread
860
+
861
+ # @!method self.values
862
+ # @return [Array<Symbol>]
863
+ end
864
+
865
+ # Keep target duplicates, first rows, or merged overlap.
866
+ module DedupeMode
867
+ extend XTwitterScraper::Internal::Type::Enum
868
+
869
+ NONE = :none
870
+ FIRST = :first
871
+ MERGE = :merge
872
+
873
+ # @!method self.values
874
+ # @return [Array<Symbol>]
875
+ end
876
+
877
+ # Media type filter (tweet_search_extractor)
373
878
  module MediaType
374
879
  extend XTwitterScraper::Internal::Type::Enum
375
880
 
@@ -384,7 +889,19 @@ module XTwitterScraper
384
889
  # @return [Array<Symbol>]
385
890
  end
386
891
 
387
- # Quote mode used for estimation (tweet_search_extractor)
892
+ # Search ranking applied to every query.
893
+ module QueryType
894
+ extend XTwitterScraper::Internal::Type::Enum
895
+
896
+ LATEST = :Latest
897
+ TOP = :Top
898
+ BOTH = :Both
899
+
900
+ # @!method self.values
901
+ # @return [Array<Symbol>]
902
+ end
903
+
904
+ # Quote mode (tweet_search_extractor)
388
905
  module Quotes
389
906
  extend XTwitterScraper::Internal::Type::Enum
390
907
 
@@ -396,7 +913,40 @@ module XTwitterScraper
396
913
  # @return [Array<Symbol>]
397
914
  end
398
915
 
399
- # Reply mode used for estimation (tweet_search_extractor)
916
+ class RelationTarget < XTwitterScraper::Internal::Type::BaseModel
917
+ # @!attribute relation
918
+ #
919
+ # @return [Symbol, XTwitterScraper::Models::ExtractionEstimateCostParams::RelationTarget::Relation]
920
+ required :relation, enum: -> { XTwitterScraper::ExtractionEstimateCostParams::RelationTarget::Relation }
921
+
922
+ # @!attribute value
923
+ #
924
+ # @return [String]
925
+ required :value, String
926
+
927
+ # @!method initialize(relation:, value:)
928
+ # One target and relation in a mixed profile collection.
929
+ #
930
+ # @param relation [Symbol, XTwitterScraper::Models::ExtractionEstimateCostParams::RelationTarget::Relation]
931
+ # @param value [String]
932
+
933
+ # @see XTwitterScraper::Models::ExtractionEstimateCostParams::RelationTarget#relation
934
+ module Relation
935
+ extend XTwitterScraper::Internal::Type::Enum
936
+
937
+ COMMUNITY_MEMBERS = :community_members
938
+ FOLLOWERS = :followers
939
+ FOLLOWING = :following
940
+ LIST_FOLLOWERS = :list_followers
941
+ LIST_MEMBERS = :list_members
942
+ VERIFIED_FOLLOWERS = :verified_followers
943
+
944
+ # @!method self.values
945
+ # @return [Array<Symbol>]
946
+ end
947
+ end
948
+
949
+ # Reply mode (tweet_search_extractor)
400
950
  module Replies
401
951
  extend XTwitterScraper::Internal::Type::Enum
402
952
 
@@ -408,7 +958,7 @@ module XTwitterScraper
408
958
  # @return [Array<Symbol>]
409
959
  end
410
960
 
411
- # Retweet mode used for estimation (tweet_search_extractor)
961
+ # Retweet mode (tweet_search_extractor)
412
962
  module Retweets
413
963
  extend XTwitterScraper::Internal::Type::Enum
414
964
 
@@ -419,6 +969,105 @@ module XTwitterScraper
419
969
  # @!method self.values
420
970
  # @return [Array<Symbol>]
421
971
  end
972
+
973
+ # Reply depth scope.
974
+ module Scope
975
+ extend XTwitterScraper::Internal::Type::Enum
976
+
977
+ ALL = :all
978
+ DIRECT = :direct
979
+ NESTED = :nested
980
+
981
+ # @!method self.values
982
+ # @return [Array<Symbol>]
983
+ end
984
+
985
+ # Reply start time as ISO 8601 or Unix seconds.
986
+ module SinceTime
987
+ extend XTwitterScraper::Internal::Type::Union
988
+
989
+ variant Time
990
+
991
+ variant Integer
992
+
993
+ # @!method self.variants
994
+ # @return [Array(Time, Integer)]
995
+ end
996
+
997
+ # Reply result order.
998
+ module Sort
999
+ extend XTwitterScraper::Internal::Type::Enum
1000
+
1001
+ RELEVANCE = :relevance
1002
+ LATEST = :latest
1003
+ OLDEST = :oldest
1004
+ LIKES = :likes
1005
+
1006
+ # @!method self.values
1007
+ # @return [Array<Symbol>]
1008
+ end
1009
+
1010
+ # One auto-routed target in a mixed Tweet collection.
1011
+ module Target
1012
+ extend XTwitterScraper::Internal::Type::Union
1013
+
1014
+ # X URL, numeric Tweet ID, @username, kind:value target, or search.
1015
+ variant String
1016
+
1017
+ variant -> { XTwitterScraper::ExtractionEstimateCostParams::Target::UnionMember1 }
1018
+
1019
+ class UnionMember1 < XTwitterScraper::Internal::Type::BaseModel
1020
+ # @!attribute kind
1021
+ #
1022
+ # @return [Symbol, XTwitterScraper::Models::ExtractionEstimateCostParams::Target::UnionMember1::Kind]
1023
+ required :kind, enum: -> { XTwitterScraper::ExtractionEstimateCostParams::Target::UnionMember1::Kind }
1024
+
1025
+ # @!attribute value
1026
+ #
1027
+ # @return [String]
1028
+ required :value, String
1029
+
1030
+ # @!method initialize(kind:, value:)
1031
+ # @param kind [Symbol, XTwitterScraper::Models::ExtractionEstimateCostParams::Target::UnionMember1::Kind]
1032
+ # @param value [String]
1033
+
1034
+ # @see XTwitterScraper::Models::ExtractionEstimateCostParams::Target::UnionMember1#kind
1035
+ module Kind
1036
+ extend XTwitterScraper::Internal::Type::Enum
1037
+
1038
+ FAVORITERS = :favoriters
1039
+ LIST = :list
1040
+ PROFILE = :profile
1041
+ PROFILE_LIKES = :profile_likes
1042
+ PROFILE_MEDIA = :profile_media
1043
+ PROFILE_REPLIES = :profile_replies
1044
+ QUOTES = :quotes
1045
+ REPLIES = :replies
1046
+ RETWEETERS = :retweeters
1047
+ SEARCH = :search
1048
+ THREAD = :thread
1049
+ TWEET = :tweet
1050
+
1051
+ # @!method self.values
1052
+ # @return [Array<Symbol>]
1053
+ end
1054
+ end
1055
+
1056
+ # @!method self.variants
1057
+ # @return [Array(String, XTwitterScraper::Models::ExtractionEstimateCostParams::Target::UnionMember1)]
1058
+ end
1059
+
1060
+ # Reply end time as ISO 8601 or Unix seconds.
1061
+ module UntilTime
1062
+ extend XTwitterScraper::Internal::Type::Union
1063
+
1064
+ variant Time
1065
+
1066
+ variant Integer
1067
+
1068
+ # @!method self.variants
1069
+ # @return [Array(Time, Integer)]
1070
+ end
422
1071
  end
423
1072
  end
424
1073
  end