scrapeunblocker 0.1.6 → 0.1.8

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: 006e8d929ddbfce0cbdd857f2e4152f90f66e90ec7f047191cba696c15bfaaa9
4
- data.tar.gz: 76b72f230eac9bf856ddfa61997272a27e2f6edf709b5e34fb97b1bcf694bf92
3
+ metadata.gz: '038dc9fc1bd496b441430ed4f1def53055dfb98db2cf21d40ec0242bcd66f344'
4
+ data.tar.gz: d8fb2745df9da6ac37db17308670f87b1c4131e2b9dfde9e5107ee4fe9e9c260
5
5
  SHA512:
6
- metadata.gz: 7306785c8274864042095c861b2f007f3bbb7978078e2bc46fc1c1e9e6b3536bf7eb3bd207bf0705a83dad68fd3d6b2292d0b7298428fc7f01242ec896a6ec49
7
- data.tar.gz: ab3fae14ec06d02cdddbe3c3f9076ac42ac739371b87025acba31d6f5f1ec92cbed81dcf058c940b82c0ee0098d8c0e5f33cb09620c97b257d31f992c8937a6b
6
+ metadata.gz: ebc1b6eec94316dfb50c56b6109212eaaec54e5b8a0087f8e11f9cc9c634c751c1fed8bafe0bad51d8cf45ba5cd4d978f46feb40fb9c0d64de18aee98712ec46
7
+ data.tar.gz: 444e12bb48cfcf2e3b1cee4d76676c4334d234cb76a8642917845e4ac3b9a179786abac31c77e7251cf2eca95c1bf3e16ae12d4ace9c6aa131581617d01c12ad
data/CHANGELOG.md CHANGED
@@ -1,5 +1,17 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.1.8 (2026-07-31)
4
+
5
+ - Added `ebay_search` for the new eBay Search plugin: listings from any of the 19 regional eBay marketplaces as structured JSON - title, numeric price and currency, condition with a normalised `conditionCode`, seller username and feedback, shipping cost, sold/watcher/bid counts, image and a clean item URL.
6
+ - Filters map straight onto the plugin: `marketplace`, `condition`, `sort`, `listing_type`, `min_price`/`max_price`, `free_shipping`, `seller`, `category`, plus `page`/`page_size` (60, 120 or 240).
7
+ - The response carries `exactMatches`; it is `false` when eBay found no match for the keyword and answered with its own loosely-related suggestions.
8
+
9
+ No breaking changes.
10
+
11
+ ## 0.1.7 (2026-07-27)
12
+
13
+ - Registry and README links to scrapeunblocker.com now carry UTM parameters so traffic from package registries is attributable. No functional changes.
14
+
3
15
  ## 0.1.6 (2026-07-23)
4
16
 
5
17
  Version jumps from 0.1.2 to 0.1.6 so all four official SDKs (Python, Node.js, Ruby, PHP) share one version number from here on. Nothing was skipped - 0.1.3 to 0.1.5 were never released for Ruby.
data/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # ScrapeUnblocker Ruby client
2
2
 
3
- Official Ruby client for the [ScrapeUnblocker](https://scrapeunblocker.com) web scraping API.
3
+ Official Ruby client for the [ScrapeUnblocker](https://scrapeunblocker.com?utm_source=rubygems&utm_medium=integration&utm_campaign=ruby-sdk) web scraping API.
4
4
 
5
5
  Every request is fully JavaScript-rendered in a real browser and routed through premium proxies, so it bypasses Cloudflare, DataDome, PerimeterX, Akamai, Kasada and similar anti-bot systems - from one simple call. You are only billed for successful requests.
6
6
 
@@ -38,7 +38,7 @@ puts product.page_type # "product"
38
38
  p product.data
39
39
  ```
40
40
 
41
- Get your API key at [app.scrapeunblocker.com](https://app.scrapeunblocker.com). The free trial does not require a credit card.
41
+ Get your API key at [app.scrapeunblocker.com](https://app.scrapeunblocker.com?utm_source=rubygems&utm_medium=integration&utm_campaign=ruby-sdk). The free trial does not require a credit card.
42
42
 
43
43
  ## Authentication
44
44
 
@@ -96,6 +96,20 @@ goods["results"].each { |item| puts "#{item['title']} #{item['price']} #{item['u
96
96
 
97
97
  `channel` is one of `"1688"` (default), `"taobao"` or `"official"`. `sort` is one of `"default"`, `"price_asc"`, `"price_desc"` or `"best_selling"`. `page_size` max is 60. Oopbuy trademark-blocks brand keywords at its own backend: those come back as a successful `200` with `keywordRejected: true` and an empty `results` array, not an error.
98
98
 
99
+ ## eBay search
100
+
101
+ ```ruby
102
+ items = su.ebay_search("iphone 13", marketplace: "ebay.com", condition: "used", sort: "newly_listed")
103
+
104
+ if items["exactMatches"]
105
+ items["results"].each do |item|
106
+ puts [item["title"], item["price"], item["currency"], item["condition"]].join(" | ")
107
+ end
108
+ end
109
+ ```
110
+
111
+ `marketplace` is any of the 19 regional eBay hosts (`ebay.com` default). `condition` is one of `"new"`, `"open_box"`, `"refurbished"`, `"used"` or `"for_parts"`; `sort` is one of `"best_match"` (default), `"newly_listed"`, `"ending_soon"`, `"price_asc"` or `"price_desc"`; `page_size` is 60, 120 or 240. `exactMatches` is `false` when eBay found nothing for the keyword and answered with its own loosely-related suggestions instead, so check it before using the listings.
112
+
99
113
  ## Cookies and the serving proxy
100
114
 
101
115
  ```ruby
@@ -201,9 +215,9 @@ ScrapeUnblocker::Client.new(
201
215
 
202
216
  ## Links
203
217
 
204
- - Documentation: https://developers.scrapeunblocker.com
205
- - Website: https://scrapeunblocker.com
206
- - Dashboard: https://app.scrapeunblocker.com
218
+ - Documentation: [developers.scrapeunblocker.com](https://developers.scrapeunblocker.com?utm_source=rubygems&utm_medium=integration&utm_campaign=ruby-sdk)
219
+ - Website: [scrapeunblocker.com](https://scrapeunblocker.com?utm_source=rubygems&utm_medium=integration&utm_campaign=ruby-sdk)
220
+ - Dashboard: [app.scrapeunblocker.com](https://app.scrapeunblocker.com?utm_source=rubygems&utm_medium=integration&utm_campaign=ruby-sdk)
207
221
 
208
222
  ## License
209
223
 
@@ -93,6 +93,34 @@ module ScrapeUnblocker
93
93
  page_size: page_size, sort: sort, proxy_country: proxy_country)
94
94
  end
95
95
 
96
+ # Search eBay and return the listings as a Hash.
97
+ #
98
+ # Each listing carries title, numeric price and currency, condition (with a
99
+ # normalised conditionCode), seller username and feedback, shipping cost,
100
+ # sold/watcher/bid counts, image and a clean item URL.
101
+ #
102
+ # +marketplace+ is a regional eBay host such as "ebay.com" (default) or
103
+ # "ebay.de"; +condition+ is one of "new", "open_box", "refurbished", "used"
104
+ # or "for_parts"; +sort+ is one of "best_match" (default), "newly_listed",
105
+ # "ending_soon", "price_asc" or "price_desc"; +listing_type+ is "all"
106
+ # (default), "buy_it_now" or "auction"; +page_size+ is 60, 120 or 240.
107
+ #
108
+ # When eBay finds no exact match it still serves a page of loosely related
109
+ # suggestions, and the response then carries <tt>exactMatches: false</tt>.
110
+ def ebay_search(keyword, marketplace: "ebay.com", page: 1, page_size: 60,
111
+ condition: nil, sort: "best_match", listing_type: "all",
112
+ min_price: nil, max_price: nil, free_shipping: false,
113
+ seller: nil, category: nil, proxy_country: nil)
114
+ post_json("/marketplace/ebay-search",
115
+ keyword: keyword, marketplace: marketplace, page: page,
116
+ page_size: page_size, condition: condition, sort: sort,
117
+ listing_type: listing_type, min_price: min_price,
118
+ max_price: max_price,
119
+ free_shipping: free_shipping ? true : nil,
120
+ seller: seller, category: category,
121
+ proxy_country: proxy_country)
122
+ end
123
+
96
124
  # Fetch an image URL through the bypass chain and return its raw bytes.
97
125
  def get_image(url, proxy_country: nil)
98
126
  request("/getImage", url: url, proxy_country: proxy_country)[:body]
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module ScrapeUnblocker
4
- VERSION = "0.1.6"
4
+ VERSION = "0.1.8"
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: scrapeunblocker
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.6
4
+ version: 0.1.8
5
5
  platform: ruby
6
6
  authors:
7
7
  - ScrapeUnblocker
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2026-07-23 00:00:00.000000000 Z
11
+ date: 2026-07-31 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: JS-rendered pages that bypass Cloudflare, DataDome, PerimeterX and Akamai,
14
14
  plus Google SERP and Skyscanner flights/hotels/car-hire scraping as JSON.
@@ -27,13 +27,13 @@ files:
27
27
  - lib/scrapeunblocker/parsed_page.rb
28
28
  - lib/scrapeunblocker/skyscanner.rb
29
29
  - lib/scrapeunblocker/version.rb
30
- homepage: https://scrapeunblocker.com
30
+ homepage: https://scrapeunblocker.com?utm_source=rubygems&utm_medium=integration&utm_campaign=ruby-sdk
31
31
  licenses:
32
32
  - MIT
33
33
  metadata:
34
- homepage_uri: https://scrapeunblocker.com
34
+ homepage_uri: https://scrapeunblocker.com?utm_source=rubygems&utm_medium=integration&utm_campaign=ruby-sdk
35
35
  source_code_uri: https://github.com/ScrapeUnblocker/scrapeunblocker-ruby
36
- documentation_uri: https://developers.scrapeunblocker.com
36
+ documentation_uri: https://developers.scrapeunblocker.com?utm_source=rubygems&utm_medium=integration&utm_campaign=ruby-sdk
37
37
  changelog_uri: https://github.com/ScrapeUnblocker/scrapeunblocker-ruby/blob/main/CHANGELOG.md
38
38
  bug_tracker_uri: https://github.com/ScrapeUnblocker/scrapeunblocker-ruby/issues
39
39
  rubygems_mfa_required: 'true'