x-twitter-scraper 0.10.3 → 0.10.5

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 377c00b19b9d19ebb8a350b172937dc5805869f1e7d500da6ec4fec43996d659
4
- data.tar.gz: e57a1128b31495941ff65b3418c059d64c2afb3d7ae69de55b1ce45937a73c59
3
+ metadata.gz: 43da66645ccb25ebf91b2fce7abd6f6e3c9ceaadf07a86086839fd29bb0e2b9f
4
+ data.tar.gz: 57f8e8b8924975b71f79ed2f7a25e5d6b9a42024a11b489a14ec1a2a0536a016
5
5
  SHA512:
6
- metadata.gz: 81ef337f2a4176e1d855428f770bc6fd4f758f4512183c6284d8e07a2d44c2cd658c8b17e008c7f10bbf9dc56d3b4c224c518c91da46b2a7080fbab0a61ed6f7
7
- data.tar.gz: 91c815184295402c9bb9a13317d7743942b8fcfa0c991324af1995064ed63748c9cb4cc052980fe479dda23591d21ee4c14fe21e9f351093a614b770ded2cf9d
6
+ metadata.gz: 32e8fbf3f54f3717f81c99b7551a44ed0d572ce900f9bae41d259ac8f4a30111f89cdd49d4355989d52a9a34ea4e3e05daa98686357b829eda37886217eb2da7
7
+ data.tar.gz: 71b43f3cfcc7a21d9c1999210eb0f283d273ff28664aeb2b2eb980c8509f49d618a1f06f91be66fc5d226c585f7ba700375618a98898483f1ca1a7bd7627668f
data/CHANGELOG.md CHANGED
@@ -1,5 +1,24 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.10.5 (2026-10-13)
4
+
5
+ [Full changelog from v0.10.4 to v0.10.5](https://github.com/Xquik-dev/x-twitter-scraper-ruby/compare/v0.10.4...v0.10.5)
6
+
7
+ ### Documentation
8
+
9
+ * The README title is now "X API & Twitter API Ruby SDK by Xquik".
10
+ * The README says near the top what Xquik is, how it bills and that it is not affiliated with X Corp.
11
+ * Doc comments use the current price. An active monitor costs 30 credits per hour.
12
+ * The gem page gains a description and links to the docs, the changelog and the issue tracker.
13
+
14
+ ## 0.10.4 (2026-08-21)
15
+
16
+ Full Changelog: [v0.10.3...v0.10.4](https://github.com/Xquik-dev/x-twitter-scraper-ruby/compare/v0.10.3...v0.10.4)
17
+
18
+ ### Documentation
19
+
20
+ * Remove repeated SDK copy and repair public links.
21
+
3
22
  ## 0.10.3 (2026-08-21)
4
23
 
5
24
  Full Changelog: [v0.10.2...v0.10.3](https://github.com/Xquik-dev/x-twitter-scraper-ruby/compare/v0.10.2...v0.10.3)
@@ -273,8 +292,6 @@ Full Changelog: [v0.1.0...v0.2.0](https://github.com/Xquik-dev/x-twitter-scraper
273
292
 
274
293
  ## 0.1.0 (2026-03-30)
275
294
 
276
- Full Changelog: [v0.0.1...v0.1.0](https://github.com/Xquik-dev/x-twitter-scraper-ruby/compare/v0.0.1...v0.1.0)
277
-
278
295
  ### Features
279
296
 
280
297
  * **api:** api update ([772ffdd](https://github.com/Xquik-dev/x-twitter-scraper-ruby/commit/772ffdd682ee96f94334441b9fc5b1e109559993))
data/README.md CHANGED
@@ -1,14 +1,22 @@
1
- # Xquik Ruby SDK: Twitter Search, Followers & X Automation
1
+ # X API & Twitter API Ruby SDK by Xquik
2
2
 
3
3
  [![OpenSSF Best Practices](https://www.bestpractices.dev/projects/13739/badge)](https://www.bestpractices.dev/projects/13739)
4
4
 
5
- Use the Xquik Ruby SDK for Twitter search, timelines, profiles & followers.
6
- Manage media, webhooks & X automation with typed requests.
7
- Use documented Xquik REST routes as a Twitter API alternative.
5
+ Use this X API & Twitter API SDK to work with X from Ruby.
6
+ It works as a Twitter scraper & tweet scraper for search, profiles & followers.
7
+ Scrape Twitter timelines, lists, communities & trends into typed results.
8
+ Manage media, webhooks, monitors & X automation with typed requests.
9
+ It provides a Twitter API alternative through documented Xquik REST routes.
10
+
11
+ Xquik is the world's fastest and cheapest X Twitter scraper service with the most complete X data.
12
+ Xquik charges only for delivered, unique, filter-matching results and never pads rows.
13
+
14
+ > Xquik is an independent third-party service. Not affiliated with X Corp.
15
+ > "Twitter" and "X" are trademarks of X Corp.
8
16
 
9
17
  [Ruby SDK Guide](https://docs.xquik.com/sdks/ruby) | [REST API](https://docs.xquik.com/api-reference/overview) | [RubyDoc](https://gemdocs.org/gems/x-twitter-scraper) | [Webhooks](https://docs.xquik.com/api-reference/webhooks/create)
10
18
 
11
- ## Common Twitter & X Tasks
19
+ ## Common Twitter & X tasks
12
20
 
13
21
  | Task | REST Route | Usage |
14
22
  | --- | --- | --- |
@@ -24,12 +32,14 @@ Use documented Xquik REST routes as a Twitter API alternative.
24
32
 
25
33
  ## Installation
26
34
 
27
- Add the gem to your `Gemfile`:
35
+ Requires Ruby 3.2.0 or higher.
36
+
37
+ Add the gem to your `Gemfile`.
28
38
 
29
39
  <!-- x-release-please-start-version -->
30
40
 
31
41
  ```ruby
32
- gem "x-twitter-scraper", "~> 0.10.3"
42
+ gem "x-twitter-scraper", "~> 0.10.5"
33
43
  ```
34
44
 
35
45
  <!-- x-release-please-end -->
@@ -41,7 +51,7 @@ require "bundler/setup"
41
51
  require "x_twitter_scraper"
42
52
 
43
53
  x_twitter_scraper = XTwitterScraper::Client.new(
44
- api_key: ENV["X_TWITTER_SCRAPER_API_KEY"] # This is the default and can be omitted
54
+ api_key: ENV["X_TWITTER_SCRAPER_API_KEY"] # Optional; the client reads this variable.
45
55
  )
46
56
 
47
57
  response = x_twitter_scraper.x.tweets.search(q: "from:elonmusk", limit: 10)
@@ -49,9 +59,9 @@ response = x_twitter_scraper.x.tweets.search(q: "from:elonmusk", limit: 10)
49
59
  puts(response)
50
60
  ```
51
61
 
52
- ### Handling Errors
62
+ ### Handling errors
53
63
 
54
- The SDK raises an `APIError` subclass for connection failures and non-2xx responses:
64
+ The SDK raises an `APIError` subclass for connection failures and non-2xx responses.
55
65
 
56
66
  ```ruby
57
67
  begin
@@ -67,8 +77,6 @@ rescue XTwitterScraper::Errors::APIStatusError => e
67
77
  end
68
78
  ```
69
79
 
70
- The SDK uses these error classes:
71
-
72
80
  | Cause | Error Type |
73
81
  | ---------------- | -------------------------- |
74
82
  | HTTP 400 | `BadRequestError` |
@@ -87,40 +95,37 @@ The SDK uses these error classes:
87
95
 
88
96
  The SDK retries connection errors, timeouts & HTTP 408, 409, 429, and 5xx responses.
89
97
  It uses exponential backoff with 2 retries by default.
90
- Set `max_retries` to change or disable retries:
98
+ Set `max_retries` to change or disable retries.
91
99
 
92
100
  ```ruby
93
- # Set the client default:
101
+ # Change the client default.
94
102
  x_twitter_scraper = XTwitterScraper::Client.new(
95
- max_retries: 0 # default is 2
103
+ max_retries: 0
96
104
  )
97
105
 
98
- # Override one request:
106
+ # Override one request.
99
107
  x_twitter_scraper.account.retrieve(request_options: {max_retries: 5})
100
108
  ```
101
109
 
102
110
  ### Timeouts
103
111
 
104
- Requests time out after 60 seconds. Set `timeout` to change or disable this limit:
112
+ Requests time out after 60 seconds. Set `timeout` to change or disable this limit.
105
113
 
106
114
  ```ruby
107
- # Set the client default:
115
+ # Change the client default.
108
116
  x_twitter_scraper = XTwitterScraper::Client.new(
109
- timeout: nil # default is 60
117
+ timeout: nil
110
118
  )
111
119
 
112
- # Override one request:
120
+ # Override one request.
113
121
  x_twitter_scraper.account.retrieve(request_options: {timeout: 5})
114
122
  ```
115
123
 
116
124
  Timeouts raise `XTwitterScraper::Errors::APITimeoutError` and follow the retry policy.
117
125
 
118
- ## Advanced Concepts
119
-
120
- ### BaseModel
126
+ ## BaseModel
121
127
 
122
- All parameter and response objects inherit from `XTwitterScraper::Internal::Type::BaseModel`.
123
- The base model provides these operations:
128
+ All parameter and response objects inherit from `XTwitterScraper::Internal::Type::BaseModel` and support these operations.
124
129
 
125
130
  1. Access known and unknown fields with `obj[:prop]`.
126
131
  2. Destructure fields with `obj => {prop: prop}` or pattern matching.
@@ -128,7 +133,7 @@ The base model provides these operations:
128
133
  4. Print classes and instances in a readable format.
129
134
  5. Convert values with `#to_h`, `#deep_to_h`, `#to_json`, or `#to_yaml`.
130
135
 
131
- ### Custom Requests
136
+ ## Custom requests
132
137
 
133
138
  Use `extra_query`, `extra_body`, or `extra_headers` under `request_options`.
134
139
  Matching `extra_` values override documented parameters.
@@ -146,7 +151,7 @@ account =
146
151
  puts(account[:my_undocumented_property])
147
152
  ```
148
153
 
149
- Use `client.request` for undocumented endpoints while retaining authentication and retries:
154
+ Use `client.request` for undocumented endpoints while retaining authentication and retries.
150
155
 
151
156
  ```ruby
152
157
  response = client.request(
@@ -158,7 +163,7 @@ response = client.request(
158
163
  )
159
164
  ```
160
165
 
161
- ### Concurrency & Connection Pooling
166
+ ## Concurrency & connection pooling
162
167
 
163
168
  Clients are thread-safe. Fork them only when no HTTP requests are in flight.
164
169
  Each client has an HTTP connection pool with a default size of 99.
@@ -170,7 +175,7 @@ Other SDK classes do not lock their data.
170
175
 
171
176
  The gem ships [RBI](https://sorbet.org/docs/rbi) definitions without `sorbet-runtime`.
172
177
 
173
- Pass request hashes or typed parameter objects:
178
+ Pass request hashes or typed parameter objects.
174
179
 
175
180
  ```ruby
176
181
  # Hashes work without type safety:
@@ -183,7 +188,7 @@ x_twitter_scraper.x.tweets.search(**params)
183
188
 
184
189
  ### Enums
185
190
 
186
- Tagged symbols replace [`T::Enum`](https://sorbet.org/docs/tenum) and remain runtime primitives:
191
+ Tagged symbols replace [`T::Enum`](https://sorbet.org/docs/tenum) and remain runtime primitives.
187
192
 
188
193
  ```ruby
189
194
  # :en
@@ -193,7 +198,7 @@ puts(XTwitterScraper::AccountUpdateLocaleParams::Locale::EN)
193
198
  T.reveal_type(XTwitterScraper::AccountUpdateLocaleParams::Locale::EN)
194
199
  ```
195
200
 
196
- Enum parameters accept constants or literal values:
201
+ Enum parameters accept constants or literal values.
197
202
 
198
203
  ```ruby
199
204
  # Enum constants preserve tagged type information:
@@ -215,17 +220,10 @@ This package follows [SemVer](https://semver.org/spec/v2.0.0.html). Version `0`
215
220
 
216
221
  Changes to non-runtime `*.rbi` and `*.rbs` definitions remain non-breaking.
217
222
 
218
- ## Requirements
219
-
220
- Ruby 3.2.0 or higher.
221
-
222
- ## Security & Support
223
+ ## Help & contributing
223
224
 
224
225
  - Report vulnerabilities through the [security policy](SECURITY.md).
225
226
  - Ask usage questions through the [organization support policy](https://github.com/Xquik-dev/.github/blob/main/SUPPORT.md).
226
-
227
- ## Contributing
228
-
229
- Read the [contribution guide](CONTRIBUTING.md).
227
+ - Read the [contribution guide](CONTRIBUTING.md).
230
228
 
231
229
  Xquik is an independent third-party service. Not affiliated with X Corp. "Twitter" and "X" are trademarks of X Corp.
data/SECURITY.md CHANGED
@@ -1,10 +1,10 @@
1
- # Security Policy
1
+ # Security policy
2
2
 
3
- ## Supported Versions
3
+ ## Supported versions
4
4
 
5
5
  Security fixes target the latest published release.
6
6
 
7
- ## Reporting A Vulnerability
7
+ ## Reporting a vulnerability
8
8
 
9
9
  Report vulnerabilities privately through
10
10
  [support@xquik.com](mailto:support@xquik.com).
@@ -403,8 +403,8 @@ module XTwitterScraper
403
403
  # Returns the raw value associated with the given key, if found. Otherwise, nil is
404
404
  # returned.
405
405
  #
406
- # It is valid to lookup keys that are not in the API spec, for example to access
407
- # undocumented features. This method does not parse response data into
406
+ # You may look up keys absent from the API spec, such as undocumented response fields.
407
+ # This method does not parse response data into
408
408
  # higher-level types. Lookup by anything other than a Symbol is an ArgumentError.
409
409
  #
410
410
  # @param key [Symbol]
@@ -78,8 +78,7 @@ module XTwitterScraper
78
78
 
79
79
  # @api private
80
80
  #
81
- # Unlike with primitives, `Enum` additionally validates that the value is a member
82
- # of the enum.
81
+ # Unlike primitives, `Enum` validates membership.
83
82
  #
84
83
  # @param value [String, Symbol, Object]
85
84
  #
@@ -37,16 +37,14 @@ module XTwitterScraper
37
37
  optional :idempotency_key, String
38
38
 
39
39
  # @!attribute extra_query
40
- # Extra query params to send with the request. These are `.merge`’d into any
41
- # `query` given at the client level.
40
+ # Extra query params merge into any `query` given at the client level.
42
41
  #
43
42
  # @return [Hash{String=>Array<String>, String, nil}, nil]
44
43
  optional :extra_query,
45
44
  XTwitterScraper::Internal::Type::HashOf[XTwitterScraper::Internal::Type::ArrayOf[String]]
46
45
 
47
46
  # @!attribute extra_headers
48
- # Extra headers to send with the request. These are `.merged`’d into any
49
- # `extra_headers` given at the client level.
47
+ # Extra headers merge into any `extra_headers` given at the client level.
50
48
  #
51
49
  # @return [Hash{String=>String, nil}, nil]
52
50
  optional :extra_headers, XTwitterScraper::Internal::Type::HashOf[String, nil?: true]
@@ -10,7 +10,7 @@ module XTwitterScraper
10
10
  # X account monitoring with 1-second checks
11
11
  class Keywords
12
12
  # Creates a keyword monitor. Keyword monitors are unlimited. Active monitors check
13
- # every 1 second and cost 21 credits per hour. Events and webhook deliveries are
13
+ # every 1 second and cost 30 credits per hour. Events and webhook deliveries are
14
14
  # included. Creation requires available credits for the first hourly charge.
15
15
  #
16
16
  # @overload create(event_types:, query:, request_options: {})
@@ -13,7 +13,7 @@ module XTwitterScraper
13
13
  attr_reader :keywords
14
14
 
15
15
  # Creates an account monitor. Monitors are unlimited. Active monitors check every
16
- # 1 second and cost 21 credits per hour. Events and webhook deliveries are
16
+ # 1 second and cost 30 credits per hour. Events and webhook deliveries are
17
17
  # included. Creation requires available credits for the first hourly charge and
18
18
  # username lookup.
19
19
  #
@@ -5,5 +5,5 @@
5
5
  # frozen_string_literal: true
6
6
 
7
7
  module XTwitterScraper
8
- VERSION = "0.10.3"
8
+ VERSION = "0.10.5"
9
9
  end
@@ -29,8 +29,7 @@ module XTwitterScraper
29
29
  sig { returns(T.nilable(String)) }
30
30
  attr_accessor :idempotency_key
31
31
 
32
- # Extra query params to send with the request. These are `.merge`’d into any
33
- # `query` given at the client level.
32
+ # Extra query params merge into any `query` given at the client level.
34
33
  sig do
35
34
  returns(
36
35
  T.nilable(T::Hash[String, T.nilable(T.any(T::Array[String], String))])
@@ -38,8 +37,7 @@ module XTwitterScraper
38
37
  end
39
38
  attr_accessor :extra_query
40
39
 
41
- # Extra headers to send with the request. These are `.merged`’d into any
42
- # `extra_headers` given at the client level.
40
+ # Extra headers merge into any `extra_headers` given at the client level.
43
41
  sig { returns(T.nilable(T::Hash[String, T.nilable(String)])) }
44
42
  attr_accessor :extra_headers
45
43
 
@@ -10,7 +10,7 @@ module XTwitterScraper
10
10
  # X account monitoring with 1-second checks
11
11
  class Keywords
12
12
  # Creates a keyword monitor. Keyword monitors are unlimited. Active monitors check
13
- # every 1 second and cost 21 credits per hour. Events and webhook deliveries are
13
+ # every 1 second and cost 30 credits per hour. Events and webhook deliveries are
14
14
  # included. Creation requires available credits for the first hourly charge.
15
15
  sig do
16
16
  params(
@@ -13,7 +13,7 @@ module XTwitterScraper
13
13
  attr_reader :keywords
14
14
 
15
15
  # Creates an account monitor. Monitors are unlimited. Active monitors check every
16
- # 1 second and cost 21 credits per hour. Events and webhook deliveries are
16
+ # 1 second and cost 30 credits per hour. Events and webhook deliveries are
17
17
  # included. Creation requires available credits for the first hourly charge and
18
18
  # username lookup.
19
19
  sig do
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: x-twitter-scraper
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.10.3
4
+ version: 0.10.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Xquik
8
8
  bindir: bin
9
9
  cert_chain: []
10
- date: 1980-01-02 00:00:00.000000000 Z
10
+ date: 2026-10-13 00:00:00.000000000 Z
11
11
  dependencies:
12
12
  - !ruby/object:Gem::Dependency
13
13
  name: base64
@@ -51,6 +51,11 @@ dependencies:
51
51
  - - ">="
52
52
  - !ruby/object:Gem::Version
53
53
  version: '0'
54
+ description: X API & Twitter API SDK for Ruby by Xquik. Scrape Twitter search, timelines,
55
+ profiles & followers as a typed Twitter scraper & tweet scraper. Manage media, webhooks,
56
+ monitors & X automation through documented Xquik REST routes. Xquik is the world's
57
+ fastest and cheapest X Twitter scraper service with the most complete X data. Not
58
+ affiliated with X Corp.
54
59
  email: support@xquik.com
55
60
  executables: []
56
61
  extensions: []
@@ -955,6 +960,9 @@ licenses:
955
960
  metadata:
956
961
  homepage_uri: https://docs.xquik.com/sdks/ruby
957
962
  source_code_uri: https://github.com/Xquik-dev/x-twitter-scraper-ruby
963
+ documentation_uri: https://docs.xquik.com/api-reference/overview
964
+ changelog_uri: https://github.com/Xquik-dev/x-twitter-scraper-ruby/blob/main/CHANGELOG.md
965
+ bug_tracker_uri: https://github.com/Xquik-dev/x-twitter-scraper-ruby/issues
958
966
  rubygems_mfa_required: 'false'
959
967
  rdoc_options: []
960
968
  require_paths:
@@ -970,8 +978,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
970
978
  - !ruby/object:Gem::Version
971
979
  version: '0'
972
980
  requirements: []
973
- rubygems_version: 4.0.16
981
+ rubygems_version: 4.0.11
974
982
  specification_version: 4
975
- summary: Ruby SDK for Twitter search, followers, webhooks & X automation. Not affiliated
976
- with X Corp.
983
+ summary: X API & Twitter API SDK for Ruby. Scrape Twitter search, profiles & followers
984
+ as a Twitter scraper & tweet scraper. Not affiliated with X Corp.
977
985
  test_files: []