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 +4 -4
- data/lib/outscraper/version.rb +1 -1
- data/lib/outscraper.rb +254 -0
- metadata +5 -5
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: e8ed0f66bc6d7aef0b43b7288be4e238375c6272df9f7027c9aad861bfde504b
|
4
|
+
data.tar.gz: 1597732b9ae976053e26571781cecd3ddc1c15c02337540c44bac0e37df39996
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 2189e4f1b9a57e0d59076b956af19c60fe328b497908ee480cbd7b012f0bf8d70c89b63224ee377f5bf7b62efb4fe2198961a87a07e7b5dd6be19ee48f885891
|
7
|
+
data.tar.gz: 1fd22a5487adcd398cb779f629ae793ed55c3575b7a1b96851714882427c71705f92e5d09e6cc4a565259ad25e3d373d4c9512a84f503312368d2b8b172d5916
|
data/lib/outscraper/version.rb
CHANGED
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.
|
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:
|
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: []
|