outscraper 0.2.0 → 0.3.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: ecd1b55729f33ebcce279af3365a4418c44fc070f00c322a7c95c343216cfa2f
4
- data.tar.gz: 98808bea598828ff72b51abf5e05eb008ce51cba8f9e6f773a5d93f7b90edffd
3
+ metadata.gz: e8ed0f66bc6d7aef0b43b7288be4e238375c6272df9f7027c9aad861bfde504b
4
+ data.tar.gz: 1597732b9ae976053e26571781cecd3ddc1c15c02337540c44bac0e37df39996
5
5
  SHA512:
6
- metadata.gz: c73198998dc45e0161b84f0bab6e0e1c5ff5b54dc255c0c61d6a720c5f4449bf5a44a36ed2eb763da400c90b6e3046eb9a2390335e2013776dbfaeba1bd73bd5
7
- data.tar.gz: 68e5203217a94f9ab6ae6964f569a7a75909d68787b44c13388c28b120fca8b3aec518a6cd0a995efd0651f186b3a2f59339242c837b1b5e59ec921350d36fc3
6
+ metadata.gz: 2189e4f1b9a57e0d59076b956af19c60fe328b497908ee480cbd7b012f0bf8d70c89b63224ee377f5bf7b62efb4fe2198961a87a07e7b5dd6be19ee48f885891
7
+ data.tar.gz: 1fd22a5487adcd398cb779f629ae793ed55c3575b7a1b96851714882427c71705f92e5d09e6cc4a565259ad25e3d373d4c9512a84f503312368d2b8b172d5916
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Outscraper
4
- VERSION = "0.2.0"
4
+ VERSION = "0.3.0"
5
5
  end
data/lib/outscraper.rb CHANGED
@@ -24,6 +24,18 @@ module Outscraper
24
24
  }).parsed_response['data']
25
25
  end
26
26
 
27
+ def google_search_news(query, pages_per_query: 1, uule: '', tbs: '', language: 'en', region: nil, async_request: false)
28
+ response = self.class.get('/google-search-news', query: {
29
+ query: query,
30
+ pagesPerQuery: pages_per_query,
31
+ uule: uule,
32
+ tbs: tbs,
33
+ language: language,
34
+ region: region,
35
+ async: async_request
36
+ }).parsed_response['data']
37
+ end
38
+
27
39
  def google_maps_search(query, limit: 20, drop_duplicates: false, language: 'en', region: nil, skip: 0)
28
40
  response = self.class.get("/maps/search-v2", 'query': {
29
41
  query: query,
@@ -36,6 +48,34 @@ module Outscraper
36
48
  }).parsed_response['data']
37
49
  end
38
50
 
51
+ def google_maps_search_v3(query, limit: 20, language: 'en', region: nil, skip: 0, drop_duplicates: false, enrichment: nil, async_request: true)
52
+ response = self.class.get('/maps/search-v3', query: {
53
+ query: query,
54
+ language: language,
55
+ region: region,
56
+ organizationsPerQueryLimit: limit,
57
+ skipPlaces: skip,
58
+ dropDuplicates: drop_duplicates,
59
+ enrichment: enrichment ? Array(enrichment) : nil,
60
+ async: async_request
61
+ }).parsed_response['data']
62
+ end
63
+
64
+ def google_maps_directions(origin: '', destination: '', departure_time: nil, finish_time: nil, interval: nil, travel_mode: 'best', language: 'en', region: nil, fields: nil, async_request: true)
65
+ response = self.class.get('/maps/directions', query: {
66
+ origin: Array(origin),
67
+ destination: Array(destination),
68
+ departure_time: departure_time,
69
+ finish_time: finish_time,
70
+ interval: interval,
71
+ travel_mode: travel_mode,
72
+ language: language,
73
+ region: region,
74
+ async: async_request,
75
+ fields: fields ? Array(fields) : nil
76
+ }).parsed_response['data']
77
+ end
78
+
39
79
  def google_maps_reviews(query, reviews_limit: 10, limit: 1, sort: 'most_relevant', skip: 0, start: 0, cutoff: 0, cutoff_rating: 0, ignore_empty: false, language: 'en', region: nil, reviews_query: nil)
40
80
  response = self.class.get("/maps/reviews-v3", 'query': {
41
81
  query: query,
@@ -54,6 +94,34 @@ module Outscraper
54
94
  }).parsed_response['data']
55
95
  end
56
96
 
97
+ def get_google_maps_photos(query, options = {})
98
+ response = self.class.get('/maps/photos-v3', query: {
99
+ query: query,
100
+ photosLimit: options[:photosLimit] || 100,
101
+ limit: options[:limit] || 1,
102
+ tag: options[:tag] || 'all',
103
+ language: options[:language] || 'en',
104
+ region: options[:region],
105
+ fields: options[:fields],
106
+ async: options.key?(:async) ? options[:async] : true,
107
+ ui: options[:ui] || false,
108
+ webhook: options[:webhook]
109
+ }).parsed_response['data']
110
+ end
111
+
112
+ def google_play_reviews(query, reviews_limit: 100, sort: 'most_relevant', cutoff: nil, rating: nil, language: 'en', fields: nil, async_request: false)
113
+ response = self.class.get('/google-play/reviews', query: {
114
+ query: query,
115
+ limit: reviews_limit,
116
+ sort: sort,
117
+ cutoff: cutoff,
118
+ rating: rating,
119
+ language: language,
120
+ async: async_request,
121
+ fields: fields ? Array(fields) : nil
122
+ }).parsed_response['data']
123
+ end
124
+
57
125
  def emails_and_contacts(query)
58
126
  response = self.class.get("/emails-and-contacts", 'query': {
59
127
  query: query,
@@ -67,5 +135,191 @@ module Outscraper
67
135
  async: false,
68
136
  }).parsed_response['data']
69
137
  end
138
+
139
+ def amazon_products(query, limit: 24, domain: 'amazon.com', postal_code: '11201', fields: nil, async_request: false)
140
+ response = self.class.get('/amazon/products-v2', query: {
141
+ query: query,
142
+ limit: limit,
143
+ domain: domain,
144
+ postal_code: postal_code,
145
+ async: async_request,
146
+ fields: fields ? Array(fields) : nil
147
+ }).parsed_response['data']
148
+ end
149
+
150
+ def amazon_reviews(query, limit: 10, sort: 'helpful', filter_by_reviewer: 'all_reviews', filter_by_star: 'all_stars', domain: nil, fields: nil, async_request: false)
151
+ response = self.class.get('/amazon/reviews', query: {
152
+ query: query,
153
+ limit: limit,
154
+ sort: sort,
155
+ filterByReviewer: filter_by_reviewer,
156
+ filterByStar: filter_by_star,
157
+ domain: domain,
158
+ async: async_request,
159
+ fields: fields ? Array(fields) : nil
160
+ }).parsed_response['data']
161
+ end
162
+
163
+ def yelp_search(query, limit: 100, async_request: false)
164
+ response = self.class.get('/yelp-search', query: {
165
+ query: query,
166
+ limit: limit,
167
+ async: async_request
168
+ }).parsed_response['data']
169
+ end
170
+
171
+ def yelp_reviews(query, limit: 100, cursor: '', sort: 'relevance_desc', cutoff: '', fields: '', async_request: false)
172
+ response = self.class.get('/yelp/reviews', query: {
173
+ query: query,
174
+ limit: limit,
175
+ cursor: cursor,
176
+ sort: sort,
177
+ cutoff: cutoff,
178
+ fields: fields,
179
+ async: async_request
180
+ }).parsed_response['data']
181
+ end
182
+
183
+ def tripadvisor_reviews(query, limit: 100, async_request: false)
184
+ response = self.class.get('/tripadvisor-reviews', query: {
185
+ query: query,
186
+ limit: limit,
187
+ async: async_request
188
+ }).parsed_response['data']
189
+ end
190
+
191
+ def app_store_reviews(query, limit: 100, sort: 'mosthelpful', cutoff: nil, fields: '', async_request: false)
192
+ response = self.class.get('/appstore/reviews', query: {
193
+ query: query,
194
+ limit: limit,
195
+ sort: sort,
196
+ cutoff: cutoff,
197
+ fields: fields,
198
+ async: async_request
199
+ }).parsed_response['data']
200
+ end
201
+
202
+ def youtube_comments(query, per_query: 100, language: 'en', region: '', fields: '', async_request: false)
203
+ response = self.class.get('/youtube-comments', query: {
204
+ query: query,
205
+ perQuery: per_query,
206
+ language: language,
207
+ region: region,
208
+ fields: fields,
209
+ async: async_request
210
+ }).parsed_response['data']
211
+ end
212
+
213
+ def g2_reviews(query, limit: 100, sort: '', cutoff: nil, fields: nil, async_request: false)
214
+ response = self.class.get('/g2/reviews', query: {
215
+ query: query,
216
+ limit: limit,
217
+ sort: sort,
218
+ cutoff: cutoff,
219
+ async: async_request,
220
+ fields: fields ? Array(fields) : nil
221
+ }).parsed_response['data']
222
+ end
223
+
224
+ def trustpilot_reviews(query, limit: 100, languages: 'default', sort: '', cutoff: nil, fields: '', async_request: false)
225
+ response = self.class.get('/trustpilot/reviews', query: {
226
+ query: query,
227
+ limit: limit,
228
+ languages: languages,
229
+ sort: sort,
230
+ cutoff: cutoff,
231
+ fields: fields,
232
+ async: async_request
233
+ }).parsed_response['data']
234
+ end
235
+
236
+ def glassdoor_reviews(query, limit: 100, sort: 'DATE', cutoff: nil, async_request: false)
237
+ response = self.class.get('/glassdoor/reviews', query: {
238
+ query: query,
239
+ limit: limit,
240
+ sort: sort,
241
+ cutoff: cutoff,
242
+ async: async_request
243
+ }).parsed_response['data']
244
+ end
245
+
246
+ def capterra_reviews(query, limit: 100, sort: '', cutoff: nil, language: 'en', region: nil, fields: nil, async_request: false)
247
+ response = self.class.get('/capterra-reviews', query: {
248
+ query: query,
249
+ limit: limit,
250
+ sort: sort,
251
+ cutoff: cutoff,
252
+ language: language,
253
+ region: region,
254
+ async: async_request,
255
+ fields: fields ? Array(fields) : nil
256
+ }).parsed_response['data']
257
+ end
258
+
259
+ def geocoding(query, async_request: false)
260
+ response = self.class.get('/geocoding', query: {
261
+ query: query,
262
+ async: async_request
263
+ }).parsed_response['data']
264
+ end
265
+
266
+ def reverse_geocoding(query, async_request: false)
267
+ response = self.class.get('/reverse-geocoding', query: {
268
+ query: query,
269
+ async: async_request
270
+ }).parsed_response['data']
271
+ end
272
+
273
+ def phone_identity_finder(query, async_request: false)
274
+ response = self.class.get('/whitepages-phones', query: {
275
+ query: query.is_a?(Array) ? query : [query],
276
+ async: async_request
277
+ }).parsed_response['data']
278
+ end
279
+
280
+ def address_scraper(query, async_request: false)
281
+ response = self.class.get('/whitepages-addresses', query: {
282
+ query: query.is_a?(Array) ? query : [query],
283
+ async: async_request
284
+ }).parsed_response['data']
285
+ end
286
+
287
+ def company_insights(query, fields: '', async_request: false, enrichments: [])
288
+ response = self.class.get('/company-insights', query: {
289
+ query: query.is_a?(Array) ? query : [query],
290
+ fields: fields,
291
+ enrichments: enrichments.is_a?(Array) ? enrichments : [enrichments],
292
+ async: async_request
293
+ }).parsed_response['data']
294
+ end
295
+
296
+ def validate_emails(query, async_request: false)
297
+ response = self.class.get('/email-validator', query: {
298
+ query: query.is_a?(Array) ? query : [query],
299
+ async: async_request
300
+ }).parsed_response['data']
301
+ end
302
+
303
+ def trustpilot(query, enrichment: [], fields: '', async_request: false)
304
+ enrichment_array = enrichment ? (enrichment.is_a?(Array) ? enrichment : [enrichment]) : []
305
+ response = self.class.get('/trustpilot', query: {
306
+ query: query.is_a?(Array) ? query : [query],
307
+ enrichment: enrichment_array,
308
+ fields: fields,
309
+ async: async_request
310
+ }).parsed_response['data']
311
+ end
312
+
313
+ def trustpilot_search(query, limit: 100, skip: 0, enrichment: [], fields: '', async_request: false)
314
+ enrichment_array = enrichment.is_a?(Array) ? enrichment : [enrichment]
315
+ response = self.class.get('/trustpilot', query: {
316
+ query: query.is_a?(Array) ? query : [query],
317
+ limit: limit,
318
+ skip: skip,
319
+ enrichment: enrichment_array,
320
+ fields: fields,
321
+ async: async_request
322
+ }).parsed_response['data']
323
+ end
70
324
  end
71
325
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: outscraper
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Outscraper
8
- autorequire:
8
+ autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2024-04-03 00:00:00.000000000 Z
11
+ date: 2025-05-27 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: httparty
@@ -58,7 +58,7 @@ metadata:
58
58
  bug_tracker_uri: https://github.com/outscraper/outscraper-ruby/issues
59
59
  documentation_uri: https://app.outscraper.com/api-docs
60
60
  github_repo: ssh://github.com/outscraper/outscraper-ruby
61
- post_install_message:
61
+ post_install_message:
62
62
  rdoc_options: []
63
63
  require_paths:
64
64
  - lib
@@ -74,7 +74,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
74
74
  version: '0'
75
75
  requirements: []
76
76
  rubygems_version: 3.1.6
77
- signing_key:
77
+ signing_key:
78
78
  specification_version: 4
79
79
  summary: Ruby bindings for the Outscraper API
80
80
  test_files: []