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
@@ -18,8 +18,9 @@ module XTwitterScraper
18
18
  optional :nested_replies, -> { XTwitterScraper::Internal::Type::ArrayOf[XTwitterScraper::SearchTweet] }
19
19
 
20
20
  # @!method initialize(diagnostic: nil, nested_replies: nil)
21
- # Reply rows. Complete mode also returns nested replies and coverage diagnostics.
22
- # Keep nested replies separate from direct coverage.
21
+ # Direct reply rows. No-mode requests use resumable automatic coverage. Complete
22
+ # mode also returns nested replies and coverage diagnostics. Keep nested replies
23
+ # separate from direct coverage.
23
24
  #
24
25
  # @param diagnostic [XTwitterScraper::Models::X::TweetGetRepliesResponse::Diagnostic] Evidence for direct-reply coverage and collector behavior.
25
26
  #
@@ -17,30 +17,141 @@ module XTwitterScraper
17
17
  # @return [String]
18
18
  required :id, String
19
19
 
20
+ # @!attribute bio_contains
21
+ # Match any comma-separated or line-separated bio term, ignoring case.
22
+ #
23
+ # @return [String, nil]
24
+ optional :bio_contains, String
25
+
20
26
  # @!attribute cursor
21
27
  # Pagination cursor for retweeters
22
28
  #
23
29
  # @return [String, nil]
24
30
  optional :cursor, String
25
31
 
32
+ # @!attribute has_location
33
+ # Only return profiles with a location.
34
+ #
35
+ # @return [Boolean, nil]
36
+ optional :has_location, XTwitterScraper::Internal::Type::Boolean
37
+
38
+ # @!attribute has_website
39
+ # Only return profiles with a website.
40
+ #
41
+ # @return [Boolean, nil]
42
+ optional :has_website, XTwitterScraper::Internal::Type::Boolean
43
+
44
+ # @!attribute location_contains
45
+ # Match a location substring, ignoring case.
46
+ #
47
+ # @return [String, nil]
48
+ optional :location_contains, String
49
+
50
+ # @!attribute max_followers
51
+ # Maximum follower count. Missing counts pass this maximum.
52
+ #
53
+ # @return [Integer, nil]
54
+ optional :max_followers, Integer
55
+
56
+ # @!attribute max_following
57
+ # Maximum following count.
58
+ #
59
+ # @return [Integer, nil]
60
+ optional :max_following, Integer
61
+
62
+ # @!attribute max_statuses
63
+ # Maximum post count. maxPosts is also accepted.
64
+ #
65
+ # @return [Integer, nil]
66
+ optional :max_statuses, Integer
67
+
68
+ # @!attribute min_account_age_days
69
+ # Minimum account age in whole days.
70
+ #
71
+ # @return [Integer, nil]
72
+ optional :min_account_age_days, Integer
73
+
74
+ # @!attribute min_followers
75
+ # Minimum follower count. Filtering happens before billing.
76
+ #
77
+ # @return [Integer, nil]
78
+ optional :min_followers, Integer
79
+
80
+ # @!attribute min_following
81
+ # Minimum following count.
82
+ #
83
+ # @return [Integer, nil]
84
+ optional :min_following, Integer
85
+
86
+ # @!attribute min_statuses
87
+ # Minimum post count. minPosts is also accepted.
88
+ #
89
+ # @return [Integer, nil]
90
+ optional :min_statuses, Integer
91
+
26
92
  # @!attribute page_size
27
- # Maximum user profiles requested from this page (20-200, default 200). The
28
- # response can contain fewer profiles because the source returned fewer or
29
- # remaining credits cover fewer results. Keep requesting next_cursor while
30
- # has_next_page is true. The deprecated limit and count aliases remain accepted.
93
+ # Maximum user profiles requested from this page (20-200, default 200). Source,
94
+ # filters, or credits can return fewer profiles. Keep requesting next_cursor while
95
+ # has_next_page is true. Deprecated aliases remain accepted.
31
96
  #
32
97
  # @return [Integer, nil]
33
98
  optional :page_size, Integer
34
99
 
35
- # @!method initialize(id:, cursor: nil, page_size: nil, request_options: {})
100
+ # @!attribute username_contains
101
+ # Match a username substring, ignoring case.
102
+ #
103
+ # @return [String, nil]
104
+ optional :username_contains, String
105
+
106
+ # @!attribute verified_only
107
+ # Only return verified profiles.
108
+ #
109
+ # @return [Boolean, nil]
110
+ optional :verified_only, XTwitterScraper::Internal::Type::Boolean
111
+
112
+ # @!attribute verified_type
113
+ # Match the verification type exactly, ignoring case.
114
+ #
115
+ # @return [String, nil]
116
+ optional :verified_type, String
117
+
118
+ # @!method initialize(id:, bio_contains: nil, cursor: nil, has_location: nil, has_website: nil, location_contains: nil, max_followers: nil, max_following: nil, max_statuses: nil, min_account_age_days: nil, min_followers: nil, min_following: nil, min_statuses: nil, page_size: nil, username_contains: nil, verified_only: nil, verified_type: nil, request_options: {})
36
119
  # Some parameter documentations has been truncated, see
37
120
  # {XTwitterScraper::Models::X::TweetGetRetweetersParams} for more details.
38
121
  #
39
122
  # @param id [String]
40
123
  #
124
+ # @param bio_contains [String] Match any comma-separated or line-separated bio term, ignoring case.
125
+ #
41
126
  # @param cursor [String] Pagination cursor for retweeters
42
127
  #
43
- # @param page_size [Integer] Maximum user profiles requested from this page (20-200, default 200). The respon
128
+ # @param has_location [Boolean] Only return profiles with a location.
129
+ #
130
+ # @param has_website [Boolean] Only return profiles with a website.
131
+ #
132
+ # @param location_contains [String] Match a location substring, ignoring case.
133
+ #
134
+ # @param max_followers [Integer] Maximum follower count. Missing counts pass this maximum.
135
+ #
136
+ # @param max_following [Integer] Maximum following count.
137
+ #
138
+ # @param max_statuses [Integer] Maximum post count. maxPosts is also accepted.
139
+ #
140
+ # @param min_account_age_days [Integer] Minimum account age in whole days.
141
+ #
142
+ # @param min_followers [Integer] Minimum follower count. Filtering happens before billing.
143
+ #
144
+ # @param min_following [Integer] Minimum following count.
145
+ #
146
+ # @param min_statuses [Integer] Minimum post count. minPosts is also accepted.
147
+ #
148
+ # @param page_size [Integer] Maximum user profiles requested from this page (20-200, default 200). Source, fi
149
+ #
150
+ # @param username_contains [String] Match a username substring, ignoring case.
151
+ #
152
+ # @param verified_only [Boolean] Only return verified profiles.
153
+ #
154
+ # @param verified_type [String] Match the verification type exactly, ignoring case.
44
155
  #
45
156
  # @param request_options [XTwitterScraper::RequestOptions, Hash{Symbol=>Object}]
46
157
  end
@@ -13,7 +13,7 @@ module XTwitterScraper
13
13
  include XTwitterScraper::Internal::Type::RequestParameters
14
14
 
15
15
  # @!attribute q
16
- # Search query (keywords,
16
+ # Query, Tweet ID, or status URL. Valid inline bounds apply per page.
17
17
  #
18
18
  # @return [String]
19
19
  required :q, String
@@ -31,12 +31,24 @@ module XTwitterScraper
31
31
  # @return [String, nil]
32
32
  optional :any_words, String
33
33
 
34
+ # @!attribute blue_verified_only
35
+ # Only return tweets from Blue-verified authors.
36
+ #
37
+ # @return [Boolean, nil]
38
+ optional :blue_verified_only, XTwitterScraper::Internal::Type::Boolean
39
+
34
40
  # @!attribute bounding_box
35
41
  # Geo bounding box, e.g. -74.1 40.6 -73.9 40.8.
36
42
  #
37
43
  # @return [String, nil]
38
44
  optional :bounding_box, String
39
45
 
46
+ # @!attribute card_name
47
+ # Match the Tweet card name.
48
+ #
49
+ # @return [String, nil]
50
+ optional :card_name, String
51
+
40
52
  # @!attribute cashtags
41
53
  # Cashtags separated by spaces, commas, or lines.
42
54
  #
@@ -50,7 +62,8 @@ module XTwitterScraper
50
62
  optional :conversation_id, String
51
63
 
52
64
  # @!attribute cursor
53
- # Pagination cursor from previous response
65
+ # Cursor from the previous response. Xquik cursors resume automatic coverage.
66
+ # Existing unprefixed cursors keep legacy standard behavior.
54
67
  #
55
68
  # @return [String, nil]
56
69
  optional :cursor, String
@@ -61,6 +74,12 @@ module XTwitterScraper
61
74
  # @return [String, nil]
62
75
  optional :exact_phrase, String
63
76
 
77
+ # @!attribute exclude_source
78
+ # Exclude a source application.
79
+ #
80
+ # @return [String, nil]
81
+ optional :exclude_source, String
82
+
64
83
  # @!attribute exclude_words
65
84
  # Words or quoted phrases to exclude. Separate with spaces, commas, or lines.
66
85
  #
@@ -73,6 +92,12 @@ module XTwitterScraper
73
92
  # @return [String, nil]
74
93
  optional :from_user, String
75
94
 
95
+ # @!attribute geocode
96
+ # Match latitude, longitude, and radius.
97
+ #
98
+ # @return [String, nil]
99
+ optional :geocode, String
100
+
76
101
  # @!attribute hashtags
77
102
  # Hashtags separated by spaces, commas, or lines.
78
103
  #
@@ -92,10 +117,9 @@ module XTwitterScraper
92
117
  optional :language, String
93
118
 
94
119
  # @!attribute limit
95
- # Max tweets to return (server paginates internally). Omit for single page (~20).
96
- # This is an upper bound for paid authenticated calls: remaining credits can
97
- # reduce the returned page size, and zero affordable results returns 402
98
- # insufficient_credits.
120
+ # Result upper bound. Omit it for the existing 20-row page size. Explicit coverage
121
+ # defaults to 2000 and allows 10000. For paid requests, remaining credits can
122
+ # reduce results. Zero affordable results returns 402.
99
123
  #
100
124
  # @return [Integer, nil]
101
125
  optional :limit, Integer
@@ -106,6 +130,36 @@ module XTwitterScraper
106
130
  # @return [String, nil]
107
131
  optional :list_id, String
108
132
 
133
+ # @!attribute max_faves
134
+ # Maximum likes threshold. maxLikes is also accepted.
135
+ #
136
+ # @return [Integer, nil]
137
+ optional :max_faves, Integer
138
+
139
+ # @!attribute max_id
140
+ # Return Tweets older than this Tweet ID.
141
+ #
142
+ # @return [String, nil]
143
+ optional :max_id, String
144
+
145
+ # @!attribute max_quotes
146
+ # Maximum quotes threshold.
147
+ #
148
+ # @return [Integer, nil]
149
+ optional :max_quotes, Integer
150
+
151
+ # @!attribute max_replies
152
+ # Maximum replies threshold.
153
+ #
154
+ # @return [Integer, nil]
155
+ optional :max_replies, Integer
156
+
157
+ # @!attribute max_retweets
158
+ # Maximum retweets threshold.
159
+ #
160
+ # @return [Integer, nil]
161
+ optional :max_retweets, Integer
162
+
109
163
  # @!attribute media_type
110
164
  # Filter by media type.
111
165
  #
@@ -118,6 +172,12 @@ module XTwitterScraper
118
172
  # @return [String, nil]
119
173
  optional :mentioning, String
120
174
 
175
+ # @!attribute min_bookmarks
176
+ # Minimum bookmark count threshold.
177
+ #
178
+ # @return [Integer, nil]
179
+ optional :min_bookmarks, Integer
180
+
121
181
  # @!attribute min_faves
122
182
  # Minimum likes threshold.
123
183
  #
@@ -142,6 +202,37 @@ module XTwitterScraper
142
202
  # @return [Integer, nil]
143
203
  optional :min_retweets, Integer
144
204
 
205
+ # @!attribute min_views
206
+ # Minimum view count threshold.
207
+ #
208
+ # @return [Integer, nil]
209
+ optional :min_views, Integer
210
+
211
+ # @!attribute mode
212
+ # Omit mode for resumable maximum coverage. Standard keeps legacy pagination.
213
+ # Coverage returns diagnostics once and rejects cursors.
214
+ #
215
+ # @return [Symbol, XTwitterScraper::Models::X::TweetSearchParams::Mode, nil]
216
+ optional :mode, enum: -> { XTwitterScraper::X::TweetSearchParams::Mode }
217
+
218
+ # @!attribute native_retweets
219
+ # Only return native reposts.
220
+ #
221
+ # @return [Boolean, nil]
222
+ optional :native_retweets, XTwitterScraper::Internal::Type::Boolean
223
+
224
+ # @!attribute near
225
+ # Match a place name.
226
+ #
227
+ # @return [String, nil]
228
+ optional :near, String
229
+
230
+ # @!attribute news
231
+ # Only return news results.
232
+ #
233
+ # @return [Boolean, nil]
234
+ optional :news, XTwitterScraper::Internal::Type::Boolean
235
+
145
236
  # @!attribute place
146
237
  # Search within a place ID.
147
238
  #
@@ -196,18 +287,36 @@ module XTwitterScraper
196
287
  # @return [String, nil]
197
288
  optional :retweets_of_tweet_id, String
198
289
 
290
+ # @!attribute safe
291
+ # Enable the safe-search filter.
292
+ #
293
+ # @return [Boolean, nil]
294
+ optional :safe, XTwitterScraper::Internal::Type::Boolean
295
+
199
296
  # @!attribute since_date
200
297
  # Start date in YYYY-MM-DD format.
201
298
  #
202
299
  # @return [Date, nil]
203
300
  optional :since_date, Date
204
301
 
302
+ # @!attribute since_id
303
+ # Return Tweets newer than this Tweet ID.
304
+ #
305
+ # @return [String, nil]
306
+ optional :since_id, String
307
+
205
308
  # @!attribute since_time
206
- # ISO 8601 timestamp - only return tweets after this time
309
+ # Inclusive ISO bound.
207
310
  #
208
311
  # @return [String, nil]
209
312
  optional :since_time, String
210
313
 
314
+ # @!attribute source
315
+ # Match the source application.
316
+ #
317
+ # @return [String, nil]
318
+ optional :source, String
319
+
211
320
  # @!attribute to_user
212
321
  # Filter replies sent to a username.
213
322
  #
@@ -221,7 +330,7 @@ module XTwitterScraper
221
330
  optional :until_date, Date
222
331
 
223
332
  # @!attribute until_time
224
- # ISO 8601 timestamp - only return tweets before this time
333
+ # Exclusive ISO bound.
225
334
  #
226
335
  # @return [String, nil]
227
336
  optional :until_time, String
@@ -238,44 +347,76 @@ module XTwitterScraper
238
347
  # @return [Boolean, nil]
239
348
  optional :verified_only, XTwitterScraper::Internal::Type::Boolean
240
349
 
241
- # @!method initialize(q:, advanced_query: nil, any_words: nil, bounding_box: nil, cashtags: nil, conversation_id: nil, cursor: nil, exact_phrase: nil, exclude_words: nil, from_user: nil, hashtags: nil, in_reply_to_tweet_id: nil, language: nil, limit: 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, query_type: nil, quotes: nil, quotes_of_tweet_id: nil, replies: nil, retweets: nil, retweets_of_tweet_id: nil, since_date: nil, since_time: nil, to_user: nil, until_date: nil, until_time: nil, url: nil, verified_only: nil, request_options: {})
350
+ # @!attribute within
351
+ # Set the radius for the near filter.
352
+ #
353
+ # @return [String, nil]
354
+ optional :within, String
355
+
356
+ # @!attribute within_time
357
+ # Match Tweets inside a recent time window.
358
+ #
359
+ # @return [String, nil]
360
+ optional :within_time, String
361
+
362
+ # @!method initialize(q:, advanced_query: nil, any_words: nil, blue_verified_only: nil, bounding_box: nil, card_name: nil, cashtags: nil, conversation_id: nil, cursor: nil, exact_phrase: nil, exclude_source: nil, exclude_words: nil, from_user: nil, geocode: nil, hashtags: nil, in_reply_to_tweet_id: nil, language: nil, limit: nil, list_id: nil, max_faves: nil, max_id: nil, max_quotes: nil, max_replies: nil, max_retweets: nil, media_type: nil, mentioning: nil, min_bookmarks: nil, min_faves: nil, min_quotes: nil, min_replies: nil, min_retweets: nil, min_views: nil, mode: nil, native_retweets: nil, near: nil, news: nil, place: nil, place_country: nil, point_radius: nil, query_type: nil, quotes: nil, quotes_of_tweet_id: nil, replies: nil, retweets: nil, retweets_of_tweet_id: nil, safe: nil, since_date: nil, since_id: nil, since_time: nil, source: nil, to_user: nil, until_date: nil, until_time: nil, url: nil, verified_only: nil, within: nil, within_time: nil, request_options: {})
242
363
  # Some parameter documentations has been truncated, see
243
364
  # {XTwitterScraper::Models::X::TweetSearchParams} for more details.
244
365
  #
245
- # @param q [String] Search query (keywords,
366
+ # @param q [String] Query, Tweet ID, or status URL. Valid inline bounds apply per page.
246
367
  #
247
368
  # @param advanced_query [String] Raw advanced search query appended as-is.
248
369
  #
249
370
  # @param any_words [String] Words or quoted phrases where any one can match. Separate with spaces, commas, o
250
371
  #
372
+ # @param blue_verified_only [Boolean] Only return tweets from Blue-verified authors.
373
+ #
251
374
  # @param bounding_box [String] Geo bounding box, e.g. -74.1 40.6 -73.9 40.8.
252
375
  #
376
+ # @param card_name [String] Match the Tweet card name.
377
+ #
253
378
  # @param cashtags [String] Cashtags separated by spaces, commas, or lines.
254
379
  #
255
380
  # @param conversation_id [String] Conversation ID filter.
256
381
  #
257
- # @param cursor [String] Pagination cursor from previous response
382
+ # @param cursor [String] Cursor from the previous response. Xquik cursors resume automatic coverage. Exis
258
383
  #
259
384
  # @param exact_phrase [String] Exact phrase to match.
260
385
  #
386
+ # @param exclude_source [String] Exclude a source application.
387
+ #
261
388
  # @param exclude_words [String] Words or quoted phrases to exclude. Separate with spaces, commas, or lines.
262
389
  #
263
390
  # @param from_user [String] Filter by author username.
264
391
  #
392
+ # @param geocode [String] Match latitude, longitude, and radius.
393
+ #
265
394
  # @param hashtags [String] Hashtags separated by spaces, commas, or lines.
266
395
  #
267
396
  # @param in_reply_to_tweet_id [String] Only replies to this tweet ID.
268
397
  #
269
398
  # @param language [String] Language code filter, e.g. en or tr.
270
399
  #
271
- # @param limit [Integer] Max tweets to return (server paginates internally). Omit for single page (~20).
400
+ # @param limit [Integer] Result upper bound. Omit it for the existing 20-row page size. Explicit coverage
272
401
  #
273
402
  # @param list_id [String] Search within a list ID.
274
403
  #
404
+ # @param max_faves [Integer] Maximum likes threshold. maxLikes is also accepted.
405
+ #
406
+ # @param max_id [String] Return Tweets older than this Tweet ID.
407
+ #
408
+ # @param max_quotes [Integer] Maximum quotes threshold.
409
+ #
410
+ # @param max_replies [Integer] Maximum replies threshold.
411
+ #
412
+ # @param max_retweets [Integer] Maximum retweets threshold.
413
+ #
275
414
  # @param media_type [Symbol, XTwitterScraper::Models::X::TweetSearchParams::MediaType] Filter by media type.
276
415
  #
277
416
  # @param mentioning [String] Filter tweets mentioning a username.
278
417
  #
418
+ # @param min_bookmarks [Integer] Minimum bookmark count threshold.
419
+ #
279
420
  # @param min_faves [Integer] Minimum likes threshold.
280
421
  #
281
422
  # @param min_quotes [Integer] Minimum quote count threshold.
@@ -284,6 +425,16 @@ module XTwitterScraper
284
425
  #
285
426
  # @param min_retweets [Integer] Minimum retweets threshold.
286
427
  #
428
+ # @param min_views [Integer] Minimum view count threshold.
429
+ #
430
+ # @param mode [Symbol, XTwitterScraper::Models::X::TweetSearchParams::Mode] Omit mode for resumable maximum coverage. Standard keeps legacy pagination. Cove
431
+ #
432
+ # @param native_retweets [Boolean] Only return native reposts.
433
+ #
434
+ # @param near [String] Match a place name.
435
+ #
436
+ # @param news [Boolean] Only return news results.
437
+ #
287
438
  # @param place [String] Search within a place ID.
288
439
  #
289
440
  # @param place_country [String] Search within a country code.
@@ -302,20 +453,30 @@ module XTwitterScraper
302
453
  #
303
454
  # @param retweets_of_tweet_id [String] Only retweets of this tweet ID.
304
455
  #
456
+ # @param safe [Boolean] Enable the safe-search filter.
457
+ #
305
458
  # @param since_date [Date] Start date in YYYY-MM-DD format.
306
459
  #
307
- # @param since_time [String] ISO 8601 timestamp - only return tweets after this time
460
+ # @param since_id [String] Return Tweets newer than this Tweet ID.
461
+ #
462
+ # @param since_time [String] Inclusive ISO bound.
463
+ #
464
+ # @param source [String] Match the source application.
308
465
  #
309
466
  # @param to_user [String] Filter replies sent to a username.
310
467
  #
311
468
  # @param until_date [Date] End date in YYYY-MM-DD format.
312
469
  #
313
- # @param until_time [String] ISO 8601 timestamp - only return tweets before this time
470
+ # @param until_time [String] Exclusive ISO bound.
314
471
  #
315
472
  # @param url [String] URL substring or domain filter.
316
473
  #
317
474
  # @param verified_only [Boolean] Only return tweets from verified authors.
318
475
  #
476
+ # @param within [String] Set the radius for the near filter.
477
+ #
478
+ # @param within_time [String] Match Tweets inside a recent time window.
479
+ #
319
480
  # @param request_options [XTwitterScraper::RequestOptions, Hash{Symbol=>Object}]
320
481
 
321
482
  # Filter by media type.
@@ -333,6 +494,18 @@ module XTwitterScraper
333
494
  # @return [Array<Symbol>]
334
495
  end
335
496
 
497
+ # Omit mode for resumable maximum coverage. Standard keeps legacy pagination.
498
+ # Coverage returns diagnostics once and rejects cursors.
499
+ module Mode
500
+ extend XTwitterScraper::Internal::Type::Enum
501
+
502
+ STANDARD = :standard
503
+ COVERAGE = :coverage
504
+
505
+ # @!method self.values
506
+ # @return [Array<Symbol>]
507
+ end
508
+
336
509
  # Sort order - Latest (chronological) or Top (engagement-ranked)
337
510
  module QueryType
338
511
  extend XTwitterScraper::Internal::Type::Enum