searchapi-ruby 0.1.0 → 1.1.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/CHANGELOG.md +12 -0
- data/README.md +267 -4
- data/lib/searchapi/resources/airbnb_property.rb +19 -0
- data/lib/searchapi/resources/airbnb_property_reviews.rb +17 -0
- data/lib/searchapi/resources/google_locations.rb +17 -0
- data/lib/searchapi/resources/google_maps_place.rb +19 -0
- data/lib/searchapi/resources/google_maps_reviews.rb +19 -0
- data/lib/searchapi/resources/instagram_profile.rb +1 -1
- data/lib/searchapi/resources/meta_ad_library_ad_details.rb +17 -0
- data/lib/searchapi/resources/meta_ad_library_page_info.rb +17 -0
- data/lib/searchapi/resources/meta_ad_library_page_search.rb +17 -0
- data/lib/searchapi/resources/tiktok_ads_library_advertiser_search.rb +17 -0
- data/lib/searchapi/resources/youtube_channel.rb +17 -0
- data/lib/searchapi/resources/youtube_channel_videos.rb +17 -0
- data/lib/searchapi/resources/youtube_comments.rb +17 -0
- data/lib/searchapi/resources/youtube_transcripts.rb +17 -0
- data/lib/searchapi/resources/youtube_video.rb +17 -0
- data/lib/searchapi/version.rb +1 -1
- data/lib/searchapi.rb +29 -1
- metadata +18 -4
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 336197178a7c4938ddb311974643989fc3a2a3b1a888bdd17f7a20feb11051ce
|
|
4
|
+
data.tar.gz: 478f58a8faac2b00d5257af308c62eb22141f3a3196e0b0396869386698f50c5
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 16e36b813639dabe78b0ad10fccc808c11cd3860467ca7f17cff0aacb1ef175f40c5e26a8f313abd3fae3af3eb7cd5612c7b7db93fc68d4519946b933f05f800
|
|
7
|
+
data.tar.gz: 852ddcb4ce850abe507857c826b2d610b7678bbe7a66f7a9ff3e449c93a6a4e8675036a800460d89530fd3d795477274909084cf39a90649fde34702270da1b4
|
data/CHANGELOG.md
CHANGED
|
@@ -4,6 +4,18 @@ All notable changes to this project will be documented in this file.
|
|
|
4
4
|
|
|
5
5
|
The format is based on [Keep a Changelog](https://keepachangelog.com/), and this project adheres to [Semantic Versioning](https://semver.org/).
|
|
6
6
|
|
|
7
|
+
## [1.1.0] - 2026-03-15
|
|
8
|
+
|
|
9
|
+
### Added
|
|
10
|
+
|
|
11
|
+
- **14 new search engine resources** (63 total):
|
|
12
|
+
- Google Maps: Reviews, Photos
|
|
13
|
+
- Airbnb: Property, Property Reviews
|
|
14
|
+
- Meta Ad Library: Page Search, Ad Details, Page Info
|
|
15
|
+
- YouTube: Transcripts, Video, Comments, Channel, Channel Videos
|
|
16
|
+
- Google Locations (geo-targeting lookup)
|
|
17
|
+
- TikTok Ads Library Advertiser Search
|
|
18
|
+
|
|
7
19
|
## [1.0.0] - 2026-02-21
|
|
8
20
|
|
|
9
21
|
### Added
|
data/README.md
CHANGED
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
|
|
10
10
|
<p align="center">
|
|
11
11
|
<strong>Full-featured Ruby client for <a href="https://www.searchapi.io/">SearchAPI.io</a></strong><br/>
|
|
12
|
-
Access <b>
|
|
12
|
+
Access <b>63 search engines</b> from a single, consistent interface.
|
|
13
13
|
</p>
|
|
14
14
|
|
|
15
15
|
<p align="center">
|
|
@@ -27,11 +27,13 @@
|
|
|
27
27
|
- [Supported Engines](#supported-engines)
|
|
28
28
|
- [Usage](#usage)
|
|
29
29
|
<details>
|
|
30
|
-
<summary>All
|
|
30
|
+
<summary>All 63 engines...</summary>
|
|
31
31
|
|
|
32
32
|
- [Google Search](#google-search)
|
|
33
33
|
- [Google Rank Tracking](#google-rank-tracking)
|
|
34
34
|
- [Google Maps](#google-maps)
|
|
35
|
+
- [Google Maps Place](#google-maps-place)
|
|
36
|
+
- [Google Maps Reviews](#google-maps-reviews)
|
|
35
37
|
- [Google News](#google-news)
|
|
36
38
|
- [Google Scholar](#google-scholar)
|
|
37
39
|
- [Google Shopping](#google-shopping)
|
|
@@ -54,7 +56,13 @@
|
|
|
54
56
|
- [Google About This Domain](#google-about-this-domain)
|
|
55
57
|
- [Google Ads Transparency Center](#google-ads-transparency-center)
|
|
56
58
|
- [Google Play Store](#google-play-store)
|
|
59
|
+
- [Google Locations](#google-locations)
|
|
57
60
|
- [YouTube](#youtube)
|
|
61
|
+
- [YouTube Transcripts](#youtube-transcripts)
|
|
62
|
+
- [YouTube Video](#youtube-video)
|
|
63
|
+
- [YouTube Comments](#youtube-comments)
|
|
64
|
+
- [YouTube Channel](#youtube-channel)
|
|
65
|
+
- [YouTube Channel Videos](#youtube-channel-videos)
|
|
58
66
|
- [Bing](#bing)
|
|
59
67
|
- [Bing Images](#bing-images)
|
|
60
68
|
- [Bing Videos](#bing-videos)
|
|
@@ -69,6 +77,8 @@
|
|
|
69
77
|
- [eBay](#ebay)
|
|
70
78
|
- [Shein](#shein)
|
|
71
79
|
- [Airbnb](#airbnb)
|
|
80
|
+
- [Airbnb Property](#airbnb-property)
|
|
81
|
+
- [Airbnb Property Reviews](#airbnb-property-reviews)
|
|
72
82
|
- [TripAdvisor](#tripadvisor)
|
|
73
83
|
- [Apple App Store](#apple-app-store)
|
|
74
84
|
- [Instagram Profile](#instagram-profile)
|
|
@@ -77,9 +87,13 @@
|
|
|
77
87
|
- [LinkedIn Ad Library](#linkedin-ad-library)
|
|
78
88
|
- [Reddit Ad Library](#reddit-ad-library)
|
|
79
89
|
- [Meta Ad Library](#meta-ad-library)
|
|
90
|
+
- [Meta Ad Library Page Search](#meta-ad-library-page-search)
|
|
91
|
+
- [Meta Ad Library Ad Details](#meta-ad-library-ad-details)
|
|
92
|
+
- [Meta Ad Library Page Info](#meta-ad-library-page-info)
|
|
80
93
|
- [TikTok Ads Library](#tiktok-ads-library)
|
|
94
|
+
- [TikTok Ads Library Advertiser Search](#tiktok-ads-library-advertiser-search)
|
|
81
95
|
|
|
82
|
-
|
|
96
|
+
</details>
|
|
83
97
|
- [Response Object](#response-object)
|
|
84
98
|
- [Error Handling](#error-handling)
|
|
85
99
|
- [Advanced Usage](#advanced-usage)
|
|
@@ -147,13 +161,15 @@ end
|
|
|
147
161
|
## Supported Engines
|
|
148
162
|
|
|
149
163
|
<details>
|
|
150
|
-
<summary><b>View all
|
|
164
|
+
<summary><b>View all 63 supported engines</b></summary>
|
|
151
165
|
|
|
152
166
|
| Category | Engine | Accessor |
|
|
153
167
|
|----------|--------|----------|
|
|
154
168
|
| **Google** | Google Search | `SearchApi.google` |
|
|
155
169
|
| | Google Rank Tracking | `SearchApi.google_rank_tracking` |
|
|
156
170
|
| | Google Maps | `SearchApi.google_maps` |
|
|
171
|
+
| | Google Maps Place | `SearchApi.google_maps_place` |
|
|
172
|
+
| | Google Maps Reviews | `SearchApi.google_maps_reviews` |
|
|
157
173
|
| | Google Local | `SearchApi.google_local` |
|
|
158
174
|
| | Google News | `SearchApi.google_news` |
|
|
159
175
|
| | Google Scholar | `SearchApi.google_scholar` |
|
|
@@ -176,6 +192,7 @@ end
|
|
|
176
192
|
| | Google About This Domain | `SearchApi.google_about_this_domain` |
|
|
177
193
|
| | Google Ads Transparency | `SearchApi.google_ads_transparency_center` |
|
|
178
194
|
| | Google Play Store | `SearchApi.google_play_store` |
|
|
195
|
+
| | Google Locations | `SearchApi.google_locations` |
|
|
179
196
|
| **Other Search Engines** | Bing | `SearchApi.bing` |
|
|
180
197
|
| | Bing Images | `SearchApi.bing_images` |
|
|
181
198
|
| | Bing Videos | `SearchApi.bing_videos` |
|
|
@@ -186,11 +203,18 @@ end
|
|
|
186
203
|
| | Yahoo | `SearchApi.yahoo` |
|
|
187
204
|
| | Naver | `SearchApi.naver` |
|
|
188
205
|
| | YouTube | `SearchApi.youtube` |
|
|
206
|
+
| | YouTube Transcripts | `SearchApi.youtube_transcripts` |
|
|
207
|
+
| | YouTube Video | `SearchApi.youtube_video` |
|
|
208
|
+
| | YouTube Comments | `SearchApi.youtube_comments` |
|
|
209
|
+
| | YouTube Channel | `SearchApi.youtube_channel` |
|
|
210
|
+
| | YouTube Channel Videos | `SearchApi.youtube_channel_videos` |
|
|
189
211
|
| **E-commerce** | Amazon | `SearchApi.amazon_search` |
|
|
190
212
|
| | Walmart | `SearchApi.walmart_search` |
|
|
191
213
|
| | eBay | `SearchApi.ebay_search` |
|
|
192
214
|
| | Shein | `SearchApi.shein_search` |
|
|
193
215
|
| **Travel** | Airbnb | `SearchApi.airbnb` |
|
|
216
|
+
| | Airbnb Property | `SearchApi.airbnb_property` |
|
|
217
|
+
| | Airbnb Property Reviews | `SearchApi.airbnb_property_reviews` |
|
|
194
218
|
| | TripAdvisor | `SearchApi.tripadvisor` |
|
|
195
219
|
| **App Stores** | Apple App Store | `SearchApi.apple_app_store` |
|
|
196
220
|
| **Social Media** | Instagram Profile | `SearchApi.instagram_profile` |
|
|
@@ -199,7 +223,11 @@ end
|
|
|
199
223
|
| **Ad Libraries** | LinkedIn Ad Library | `SearchApi.linkedin_ad_library` |
|
|
200
224
|
| | Reddit Ad Library | `SearchApi.reddit_ad_library` |
|
|
201
225
|
| | Meta Ad Library | `SearchApi.meta_ad_library` |
|
|
226
|
+
| | Meta Ad Library Page Search | `SearchApi.meta_ad_library_page_search` |
|
|
227
|
+
| | Meta Ad Library Ad Details | `SearchApi.meta_ad_library_ad_details` |
|
|
228
|
+
| | Meta Ad Library Page Info | `SearchApi.meta_ad_library_page_info` |
|
|
202
229
|
| | TikTok Ads Library | `SearchApi.tiktok_ads_library` |
|
|
230
|
+
| | TikTok Ads Library Advertiser Search | `SearchApi.tiktok_ads_library_advertiser_search` |
|
|
203
231
|
|
|
204
232
|
</details>
|
|
205
233
|
|
|
@@ -266,6 +294,49 @@ response = SearchApi.google_maps.directions(
|
|
|
266
294
|
```
|
|
267
295
|
|
|
268
296
|
|
|
297
|
+
</details>
|
|
298
|
+
|
|
299
|
+
<details>
|
|
300
|
+
<summary><b>Google Maps Place</b></summary>
|
|
301
|
+
|
|
302
|
+
|
|
303
|
+
```ruby
|
|
304
|
+
# By data_id
|
|
305
|
+
response = SearchApi.google_maps_place.search(data_id: "0x60188b857...")
|
|
306
|
+
|
|
307
|
+
# By place_id
|
|
308
|
+
response = SearchApi.google_maps_place.search(place_id: "ChIJN1t_tDeuEmsRUsoyG83frY4")
|
|
309
|
+
|
|
310
|
+
# With localization
|
|
311
|
+
response = SearchApi.google_maps_place.search(data_id: "0x60188b857...", hl: "es", gl: "mx")
|
|
312
|
+
```
|
|
313
|
+
|
|
314
|
+
|
|
315
|
+
</details>
|
|
316
|
+
|
|
317
|
+
<details>
|
|
318
|
+
<summary><b>Google Maps Reviews</b></summary>
|
|
319
|
+
|
|
320
|
+
|
|
321
|
+
```ruby
|
|
322
|
+
# Basic reviews
|
|
323
|
+
response = SearchApi.google_maps_reviews.search(data_id: "0x60188b857...")
|
|
324
|
+
|
|
325
|
+
# With sorting and pagination
|
|
326
|
+
response = SearchApi.google_maps_reviews.search(
|
|
327
|
+
data_id: "0x60188b857...",
|
|
328
|
+
sort_by: "newest",
|
|
329
|
+
num: 20
|
|
330
|
+
)
|
|
331
|
+
|
|
332
|
+
# Paginate through results
|
|
333
|
+
response = SearchApi.google_maps_reviews.search(
|
|
334
|
+
data_id: "0x60188b857...",
|
|
335
|
+
next_page_token: response.data["serpapi_pagination"]["next_page_token"]
|
|
336
|
+
)
|
|
337
|
+
```
|
|
338
|
+
|
|
339
|
+
|
|
269
340
|
</details>
|
|
270
341
|
|
|
271
342
|
<details>
|
|
@@ -639,6 +710,21 @@ response = SearchApi.google_play_store.search(store: "apps", q: "fitness", gl: "
|
|
|
639
710
|
```
|
|
640
711
|
|
|
641
712
|
|
|
713
|
+
</details>
|
|
714
|
+
|
|
715
|
+
<details>
|
|
716
|
+
<summary><b>Google Locations</b></summary>
|
|
717
|
+
|
|
718
|
+
|
|
719
|
+
```ruby
|
|
720
|
+
# Find geo-targeting locations for use with other Google engines
|
|
721
|
+
response = SearchApi.google_locations.search(q: "new york")
|
|
722
|
+
|
|
723
|
+
# Limit results
|
|
724
|
+
response = SearchApi.google_locations.search(q: "london", limit: 5)
|
|
725
|
+
```
|
|
726
|
+
|
|
727
|
+
|
|
642
728
|
</details>
|
|
643
729
|
|
|
644
730
|
<details>
|
|
@@ -653,6 +739,82 @@ response = SearchApi.youtube.search("cooking", gl: "us", hl: "en")
|
|
|
653
739
|
```
|
|
654
740
|
|
|
655
741
|
|
|
742
|
+
</details>
|
|
743
|
+
|
|
744
|
+
<details>
|
|
745
|
+
<summary><b>YouTube Transcripts</b></summary>
|
|
746
|
+
|
|
747
|
+
|
|
748
|
+
```ruby
|
|
749
|
+
response = SearchApi.youtube_transcripts.search(video_id: "dQw4w9WgXcQ")
|
|
750
|
+
|
|
751
|
+
# In a specific language
|
|
752
|
+
response = SearchApi.youtube_transcripts.search(video_id: "dQw4w9WgXcQ", lang: "es")
|
|
753
|
+
```
|
|
754
|
+
|
|
755
|
+
|
|
756
|
+
</details>
|
|
757
|
+
|
|
758
|
+
<details>
|
|
759
|
+
<summary><b>YouTube Video</b></summary>
|
|
760
|
+
|
|
761
|
+
|
|
762
|
+
```ruby
|
|
763
|
+
response = SearchApi.youtube_video.search(video_id: "dQw4w9WgXcQ")
|
|
764
|
+
|
|
765
|
+
# With localization
|
|
766
|
+
response = SearchApi.youtube_video.search(video_id: "dQw4w9WgXcQ", gl: "us", hl: "en")
|
|
767
|
+
```
|
|
768
|
+
|
|
769
|
+
|
|
770
|
+
</details>
|
|
771
|
+
|
|
772
|
+
<details>
|
|
773
|
+
<summary><b>YouTube Comments</b></summary>
|
|
774
|
+
|
|
775
|
+
|
|
776
|
+
```ruby
|
|
777
|
+
response = SearchApi.youtube_comments.search(video_id: "dQw4w9WgXcQ")
|
|
778
|
+
|
|
779
|
+
# Paginate through comments
|
|
780
|
+
response = SearchApi.youtube_comments.search(
|
|
781
|
+
video_id: "dQw4w9WgXcQ",
|
|
782
|
+
next_page_token: response.data["pagination"]["next_page_token"]
|
|
783
|
+
)
|
|
784
|
+
```
|
|
785
|
+
|
|
786
|
+
|
|
787
|
+
</details>
|
|
788
|
+
|
|
789
|
+
<details>
|
|
790
|
+
<summary><b>YouTube Channel</b></summary>
|
|
791
|
+
|
|
792
|
+
|
|
793
|
+
```ruby
|
|
794
|
+
response = SearchApi.youtube_channel.search(channel_id: "UCxxxxxx")
|
|
795
|
+
|
|
796
|
+
# With localization
|
|
797
|
+
response = SearchApi.youtube_channel.search(channel_id: "UCxxxxxx", gl: "us", hl: "en")
|
|
798
|
+
```
|
|
799
|
+
|
|
800
|
+
|
|
801
|
+
</details>
|
|
802
|
+
|
|
803
|
+
<details>
|
|
804
|
+
<summary><b>YouTube Channel Videos</b></summary>
|
|
805
|
+
|
|
806
|
+
|
|
807
|
+
```ruby
|
|
808
|
+
response = SearchApi.youtube_channel_videos.search(channel_id: "UCxxxxxx")
|
|
809
|
+
|
|
810
|
+
# Paginate through videos
|
|
811
|
+
response = SearchApi.youtube_channel_videos.search(
|
|
812
|
+
channel_id: "UCxxxxxx",
|
|
813
|
+
next_page_token: response.data["pagination"]["next_page_token"]
|
|
814
|
+
)
|
|
815
|
+
```
|
|
816
|
+
|
|
817
|
+
|
|
656
818
|
</details>
|
|
657
819
|
|
|
658
820
|
<details>
|
|
@@ -843,6 +1005,47 @@ response = SearchApi.airbnb.search("Tulum",
|
|
|
843
1005
|
```
|
|
844
1006
|
|
|
845
1007
|
|
|
1008
|
+
</details>
|
|
1009
|
+
|
|
1010
|
+
<details>
|
|
1011
|
+
<summary><b>Airbnb Property</b></summary>
|
|
1012
|
+
|
|
1013
|
+
|
|
1014
|
+
```ruby
|
|
1015
|
+
# By property ID
|
|
1016
|
+
response = SearchApi.airbnb_property.search(property_id: "12345678")
|
|
1017
|
+
|
|
1018
|
+
# With dates and guests
|
|
1019
|
+
response = SearchApi.airbnb_property.search(
|
|
1020
|
+
property_id: "12345678",
|
|
1021
|
+
check_in_date: "2026-06-15",
|
|
1022
|
+
check_out_date: "2026-06-22",
|
|
1023
|
+
adults: 2
|
|
1024
|
+
)
|
|
1025
|
+
|
|
1026
|
+
# By booking token
|
|
1027
|
+
response = SearchApi.airbnb_property.search(booking_token: "token_from_search_result")
|
|
1028
|
+
```
|
|
1029
|
+
|
|
1030
|
+
|
|
1031
|
+
</details>
|
|
1032
|
+
|
|
1033
|
+
<details>
|
|
1034
|
+
<summary><b>Airbnb Property Reviews</b></summary>
|
|
1035
|
+
|
|
1036
|
+
|
|
1037
|
+
```ruby
|
|
1038
|
+
response = SearchApi.airbnb_property_reviews.search(property_id: "12345678")
|
|
1039
|
+
|
|
1040
|
+
# With sorting and pagination
|
|
1041
|
+
response = SearchApi.airbnb_property_reviews.search(
|
|
1042
|
+
property_id: "12345678",
|
|
1043
|
+
sort_by: "most_recent",
|
|
1044
|
+
page: 2
|
|
1045
|
+
)
|
|
1046
|
+
```
|
|
1047
|
+
|
|
1048
|
+
|
|
846
1049
|
</details>
|
|
847
1050
|
|
|
848
1051
|
<details>
|
|
@@ -959,6 +1162,55 @@ response = SearchApi.meta_ad_library.search(
|
|
|
959
1162
|
```
|
|
960
1163
|
|
|
961
1164
|
|
|
1165
|
+
</details>
|
|
1166
|
+
|
|
1167
|
+
<details>
|
|
1168
|
+
<summary><b>Meta Ad Library Page Search</b></summary>
|
|
1169
|
+
|
|
1170
|
+
|
|
1171
|
+
```ruby
|
|
1172
|
+
# Search for advertiser pages
|
|
1173
|
+
response = SearchApi.meta_ad_library_page_search.search(q: "Nike")
|
|
1174
|
+
|
|
1175
|
+
# With filters
|
|
1176
|
+
response = SearchApi.meta_ad_library_page_search.search(
|
|
1177
|
+
q: "Nike",
|
|
1178
|
+
country: "US",
|
|
1179
|
+
ad_type: "political"
|
|
1180
|
+
)
|
|
1181
|
+
```
|
|
1182
|
+
|
|
1183
|
+
|
|
1184
|
+
</details>
|
|
1185
|
+
|
|
1186
|
+
<details>
|
|
1187
|
+
<summary><b>Meta Ad Library Ad Details</b></summary>
|
|
1188
|
+
|
|
1189
|
+
|
|
1190
|
+
```ruby
|
|
1191
|
+
response = SearchApi.meta_ad_library_ad_details.search(ad_archive_id: "123456789")
|
|
1192
|
+
|
|
1193
|
+
# Political ad with regional transparency data
|
|
1194
|
+
response = SearchApi.meta_ad_library_ad_details.search(
|
|
1195
|
+
ad_archive_id: "123456789",
|
|
1196
|
+
is_political: true,
|
|
1197
|
+
country: "US",
|
|
1198
|
+
page_id: "987654321"
|
|
1199
|
+
)
|
|
1200
|
+
```
|
|
1201
|
+
|
|
1202
|
+
|
|
1203
|
+
</details>
|
|
1204
|
+
|
|
1205
|
+
<details>
|
|
1206
|
+
<summary><b>Meta Ad Library Page Info</b></summary>
|
|
1207
|
+
|
|
1208
|
+
|
|
1209
|
+
```ruby
|
|
1210
|
+
response = SearchApi.meta_ad_library_page_info.search(page_id: "123456789")
|
|
1211
|
+
```
|
|
1212
|
+
|
|
1213
|
+
|
|
962
1214
|
</details>
|
|
963
1215
|
|
|
964
1216
|
<details>
|
|
@@ -975,6 +1227,17 @@ response = SearchApi.tiktok_ads_library.search(
|
|
|
975
1227
|
|
|
976
1228
|
|
|
977
1229
|
</details>
|
|
1230
|
+
<details>
|
|
1231
|
+
<summary><b>TikTok Ads Library Advertiser Search</b></summary>
|
|
1232
|
+
|
|
1233
|
+
|
|
1234
|
+
```ruby
|
|
1235
|
+
response = SearchApi.tiktok_ads_library_advertiser_search.search(q: "Nike")
|
|
1236
|
+
```
|
|
1237
|
+
|
|
1238
|
+
|
|
1239
|
+
</details>
|
|
1240
|
+
|
|
978
1241
|
## Response Object
|
|
979
1242
|
|
|
980
1243
|
Every API call returns a `SearchApi::Response`:
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module SearchApi
|
|
4
|
+
module Resources
|
|
5
|
+
class AirbnbProperty < Resource
|
|
6
|
+
def search(property_id: nil, booking_token: nil, **params)
|
|
7
|
+
params[:property_id] = property_id if property_id
|
|
8
|
+
params[:booking_token] = booking_token if booking_token
|
|
9
|
+
get(**params)
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
private
|
|
13
|
+
|
|
14
|
+
def engine_name
|
|
15
|
+
"airbnb_property"
|
|
16
|
+
end
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
end
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module SearchApi
|
|
4
|
+
module Resources
|
|
5
|
+
class AirbnbPropertyReviews < Resource
|
|
6
|
+
def search(property_id:, **params)
|
|
7
|
+
get(property_id: property_id, **params)
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
private
|
|
11
|
+
|
|
12
|
+
def engine_name
|
|
13
|
+
"airbnb_property_reviews"
|
|
14
|
+
end
|
|
15
|
+
end
|
|
16
|
+
end
|
|
17
|
+
end
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module SearchApi
|
|
4
|
+
module Resources
|
|
5
|
+
class GoogleMapsPlace < Resource
|
|
6
|
+
def search(data_id: nil, place_id: nil, **params)
|
|
7
|
+
params[:data_id] = data_id if data_id
|
|
8
|
+
params[:place_id] = place_id if place_id
|
|
9
|
+
get(**params)
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
private
|
|
13
|
+
|
|
14
|
+
def engine_name
|
|
15
|
+
"google_maps_place"
|
|
16
|
+
end
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
end
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module SearchApi
|
|
4
|
+
module Resources
|
|
5
|
+
class GoogleMapsReviews < Resource
|
|
6
|
+
def search(data_id: nil, place_id: nil, **params)
|
|
7
|
+
params[:data_id] = data_id if data_id
|
|
8
|
+
params[:place_id] = place_id if place_id
|
|
9
|
+
get(**params)
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
private
|
|
13
|
+
|
|
14
|
+
def engine_name
|
|
15
|
+
"google_maps_reviews"
|
|
16
|
+
end
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
end
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module SearchApi
|
|
4
|
+
module Resources
|
|
5
|
+
class MetaAdLibraryAdDetails < Resource
|
|
6
|
+
def search(ad_archive_id:, **params)
|
|
7
|
+
get(ad_archive_id: ad_archive_id, **params)
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
private
|
|
11
|
+
|
|
12
|
+
def engine_name
|
|
13
|
+
"meta_ad_library_ad_details"
|
|
14
|
+
end
|
|
15
|
+
end
|
|
16
|
+
end
|
|
17
|
+
end
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module SearchApi
|
|
4
|
+
module Resources
|
|
5
|
+
class MetaAdLibraryPageInfo < Resource
|
|
6
|
+
def search(page_id:, **params)
|
|
7
|
+
get(page_id: page_id, **params)
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
private
|
|
11
|
+
|
|
12
|
+
def engine_name
|
|
13
|
+
"meta_ad_library_page_info"
|
|
14
|
+
end
|
|
15
|
+
end
|
|
16
|
+
end
|
|
17
|
+
end
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module SearchApi
|
|
4
|
+
module Resources
|
|
5
|
+
class MetaAdLibraryPageSearch < Resource
|
|
6
|
+
def search(q:, **params)
|
|
7
|
+
get(q: q, **params)
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
private
|
|
11
|
+
|
|
12
|
+
def engine_name
|
|
13
|
+
"meta_ad_library_page_search"
|
|
14
|
+
end
|
|
15
|
+
end
|
|
16
|
+
end
|
|
17
|
+
end
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module SearchApi
|
|
4
|
+
module Resources
|
|
5
|
+
class TiktokAdsLibraryAdvertiserSearch < Resource
|
|
6
|
+
def search(q:, **params)
|
|
7
|
+
get(q: q, **params)
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
private
|
|
11
|
+
|
|
12
|
+
def engine_name
|
|
13
|
+
"tiktok_ads_library_advertiser_search"
|
|
14
|
+
end
|
|
15
|
+
end
|
|
16
|
+
end
|
|
17
|
+
end
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module SearchApi
|
|
4
|
+
module Resources
|
|
5
|
+
class YouTubeChannel < Resource
|
|
6
|
+
def search(channel_id:, **params)
|
|
7
|
+
get(channel_id: channel_id, **params)
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
private
|
|
11
|
+
|
|
12
|
+
def engine_name
|
|
13
|
+
"youtube_channel"
|
|
14
|
+
end
|
|
15
|
+
end
|
|
16
|
+
end
|
|
17
|
+
end
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module SearchApi
|
|
4
|
+
module Resources
|
|
5
|
+
class YouTubeChannelVideos < Resource
|
|
6
|
+
def search(channel_id:, **params)
|
|
7
|
+
get(channel_id: channel_id, **params)
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
private
|
|
11
|
+
|
|
12
|
+
def engine_name
|
|
13
|
+
"youtube_channel_videos"
|
|
14
|
+
end
|
|
15
|
+
end
|
|
16
|
+
end
|
|
17
|
+
end
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module SearchApi
|
|
4
|
+
module Resources
|
|
5
|
+
class YouTubeComments < Resource
|
|
6
|
+
def search(video_id:, **params)
|
|
7
|
+
get(video_id: video_id, **params)
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
private
|
|
11
|
+
|
|
12
|
+
def engine_name
|
|
13
|
+
"youtube_comments"
|
|
14
|
+
end
|
|
15
|
+
end
|
|
16
|
+
end
|
|
17
|
+
end
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module SearchApi
|
|
4
|
+
module Resources
|
|
5
|
+
class YouTubeTranscripts < Resource
|
|
6
|
+
def search(video_id:, **params)
|
|
7
|
+
get(video_id: video_id, **params)
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
private
|
|
11
|
+
|
|
12
|
+
def engine_name
|
|
13
|
+
"youtube_transcripts"
|
|
14
|
+
end
|
|
15
|
+
end
|
|
16
|
+
end
|
|
17
|
+
end
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module SearchApi
|
|
4
|
+
module Resources
|
|
5
|
+
class YouTubeVideo < Resource
|
|
6
|
+
def search(video_id:, **params)
|
|
7
|
+
get(video_id: video_id, **params)
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
private
|
|
11
|
+
|
|
12
|
+
def engine_name
|
|
13
|
+
"youtube_video"
|
|
14
|
+
end
|
|
15
|
+
end
|
|
16
|
+
end
|
|
17
|
+
end
|
data/lib/searchapi/version.rb
CHANGED
data/lib/searchapi.rb
CHANGED
|
@@ -12,6 +12,8 @@ require_relative "searchapi/resources/google"
|
|
|
12
12
|
require_relative "searchapi/resources/google_rank_tracking"
|
|
13
13
|
require_relative "searchapi/resources/google_events"
|
|
14
14
|
require_relative "searchapi/resources/google_maps"
|
|
15
|
+
require_relative "searchapi/resources/google_maps_place"
|
|
16
|
+
require_relative "searchapi/resources/google_maps_reviews"
|
|
15
17
|
require_relative "searchapi/resources/google_scholar"
|
|
16
18
|
require_relative "searchapi/resources/google_news"
|
|
17
19
|
require_relative "searchapi/resources/google_jobs"
|
|
@@ -33,6 +35,7 @@ require_relative "searchapi/resources/google_forums"
|
|
|
33
35
|
require_relative "searchapi/resources/google_patents"
|
|
34
36
|
require_relative "searchapi/resources/google_ai_overview"
|
|
35
37
|
require_relative "searchapi/resources/google_play_store"
|
|
38
|
+
require_relative "searchapi/resources/google_locations"
|
|
36
39
|
|
|
37
40
|
# Other search engines
|
|
38
41
|
require_relative "searchapi/resources/amazon_search"
|
|
@@ -46,6 +49,11 @@ require_relative "searchapi/resources/duckduckgo"
|
|
|
46
49
|
require_relative "searchapi/resources/yahoo"
|
|
47
50
|
require_relative "searchapi/resources/naver"
|
|
48
51
|
require_relative "searchapi/resources/youtube"
|
|
52
|
+
require_relative "searchapi/resources/youtube_transcripts"
|
|
53
|
+
require_relative "searchapi/resources/youtube_video"
|
|
54
|
+
require_relative "searchapi/resources/youtube_comments"
|
|
55
|
+
require_relative "searchapi/resources/youtube_channel"
|
|
56
|
+
require_relative "searchapi/resources/youtube_channel_videos"
|
|
49
57
|
|
|
50
58
|
# App stores
|
|
51
59
|
require_relative "searchapi/resources/apple_app_store"
|
|
@@ -57,6 +65,8 @@ require_relative "searchapi/resources/ebay_search"
|
|
|
57
65
|
|
|
58
66
|
# Travel & hospitality
|
|
59
67
|
require_relative "searchapi/resources/airbnb"
|
|
68
|
+
require_relative "searchapi/resources/airbnb_property"
|
|
69
|
+
require_relative "searchapi/resources/airbnb_property_reviews"
|
|
60
70
|
require_relative "searchapi/resources/tripadvisor"
|
|
61
71
|
|
|
62
72
|
# Social media profiles
|
|
@@ -68,7 +78,11 @@ require_relative "searchapi/resources/facebook_business_page"
|
|
|
68
78
|
require_relative "searchapi/resources/linkedin_ad_library"
|
|
69
79
|
require_relative "searchapi/resources/reddit_ad_library"
|
|
70
80
|
require_relative "searchapi/resources/meta_ad_library"
|
|
81
|
+
require_relative "searchapi/resources/meta_ad_library_page_search"
|
|
82
|
+
require_relative "searchapi/resources/meta_ad_library_ad_details"
|
|
83
|
+
require_relative "searchapi/resources/meta_ad_library_page_info"
|
|
71
84
|
require_relative "searchapi/resources/tiktok_ads_library"
|
|
85
|
+
require_relative "searchapi/resources/tiktok_ads_library_advertiser_search"
|
|
72
86
|
|
|
73
87
|
module SearchApi
|
|
74
88
|
# Registry mapping accessor names to resource classes.
|
|
@@ -78,6 +92,8 @@ module SearchApi
|
|
|
78
92
|
google_rank_tracking: Resources::GoogleRankTracking,
|
|
79
93
|
google_events: Resources::GoogleEvents,
|
|
80
94
|
google_maps: Resources::GoogleMaps,
|
|
95
|
+
google_maps_place: Resources::GoogleMapsPlace,
|
|
96
|
+
google_maps_reviews: Resources::GoogleMapsReviews,
|
|
81
97
|
google_scholar: Resources::GoogleScholar,
|
|
82
98
|
google_news: Resources::GoogleNews,
|
|
83
99
|
google_jobs: Resources::GoogleJobs,
|
|
@@ -99,6 +115,7 @@ module SearchApi
|
|
|
99
115
|
google_patents: Resources::GooglePatents,
|
|
100
116
|
google_ai_overview: Resources::GoogleAiOverview,
|
|
101
117
|
google_play_store: Resources::GooglePlayStore,
|
|
118
|
+
google_locations: Resources::GoogleLocations,
|
|
102
119
|
|
|
103
120
|
# Other search engines
|
|
104
121
|
amazon_search: Resources::AmazonSearch,
|
|
@@ -112,6 +129,11 @@ module SearchApi
|
|
|
112
129
|
yahoo: Resources::Yahoo,
|
|
113
130
|
naver: Resources::Naver,
|
|
114
131
|
youtube: Resources::YouTube,
|
|
132
|
+
youtube_transcripts: Resources::YouTubeTranscripts,
|
|
133
|
+
youtube_video: Resources::YouTubeVideo,
|
|
134
|
+
youtube_comments: Resources::YouTubeComments,
|
|
135
|
+
youtube_channel: Resources::YouTubeChannel,
|
|
136
|
+
youtube_channel_videos: Resources::YouTubeChannelVideos,
|
|
115
137
|
|
|
116
138
|
# App stores
|
|
117
139
|
apple_app_store: Resources::AppleAppStore,
|
|
@@ -123,6 +145,8 @@ module SearchApi
|
|
|
123
145
|
|
|
124
146
|
# Travel & hospitality
|
|
125
147
|
airbnb: Resources::Airbnb,
|
|
148
|
+
airbnb_property: Resources::AirbnbProperty,
|
|
149
|
+
airbnb_property_reviews: Resources::AirbnbPropertyReviews,
|
|
126
150
|
tripadvisor: Resources::TripAdvisor,
|
|
127
151
|
|
|
128
152
|
# Social media profiles
|
|
@@ -134,7 +158,11 @@ module SearchApi
|
|
|
134
158
|
linkedin_ad_library: Resources::LinkedinAdLibrary,
|
|
135
159
|
reddit_ad_library: Resources::RedditAdLibrary,
|
|
136
160
|
meta_ad_library: Resources::MetaAdLibrary,
|
|
137
|
-
|
|
161
|
+
meta_ad_library_page_search: Resources::MetaAdLibraryPageSearch,
|
|
162
|
+
meta_ad_library_ad_details: Resources::MetaAdLibraryAdDetails,
|
|
163
|
+
meta_ad_library_page_info: Resources::MetaAdLibraryPageInfo,
|
|
164
|
+
tiktok_ads_library: Resources::TiktokAdsLibrary,
|
|
165
|
+
tiktok_ads_library_advertiser_search: Resources::TiktokAdsLibraryAdvertiserSearch
|
|
138
166
|
}.freeze
|
|
139
167
|
|
|
140
168
|
class << self
|
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: searchapi-ruby
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version:
|
|
4
|
+
version: 1.1.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- aalvaaro
|
|
@@ -43,11 +43,11 @@ dependencies:
|
|
|
43
43
|
- - "~>"
|
|
44
44
|
- !ruby/object:Gem::Version
|
|
45
45
|
version: '2.0'
|
|
46
|
-
description: Full-featured Ruby client for SearchAPI.io. Access
|
|
46
|
+
description: Full-featured Ruby client for SearchAPI.io. Access 63 search engines
|
|
47
47
|
including Google, Bing, Baidu, Yandex, DuckDuckGo, YouTube, Amazon, Walmart, Airbnb,
|
|
48
48
|
TripAdvisor, social media profiles, ad libraries, and more.
|
|
49
49
|
email:
|
|
50
|
-
-
|
|
50
|
+
- hola@alvarodelgado.dev
|
|
51
51
|
executables: []
|
|
52
52
|
extensions: []
|
|
53
53
|
extra_rdoc_files: []
|
|
@@ -61,6 +61,8 @@ files:
|
|
|
61
61
|
- lib/searchapi/error.rb
|
|
62
62
|
- lib/searchapi/resource.rb
|
|
63
63
|
- lib/searchapi/resources/airbnb.rb
|
|
64
|
+
- lib/searchapi/resources/airbnb_property.rb
|
|
65
|
+
- lib/searchapi/resources/airbnb_property_reviews.rb
|
|
64
66
|
- lib/searchapi/resources/amazon_search.rb
|
|
65
67
|
- lib/searchapi/resources/apple_app_store.rb
|
|
66
68
|
- lib/searchapi/resources/baidu.rb
|
|
@@ -85,7 +87,10 @@ files:
|
|
|
85
87
|
- lib/searchapi/resources/google_jobs.rb
|
|
86
88
|
- lib/searchapi/resources/google_lens.rb
|
|
87
89
|
- lib/searchapi/resources/google_local.rb
|
|
90
|
+
- lib/searchapi/resources/google_locations.rb
|
|
88
91
|
- lib/searchapi/resources/google_maps.rb
|
|
92
|
+
- lib/searchapi/resources/google_maps_place.rb
|
|
93
|
+
- lib/searchapi/resources/google_maps_reviews.rb
|
|
89
94
|
- lib/searchapi/resources/google_news.rb
|
|
90
95
|
- lib/searchapi/resources/google_patents.rb
|
|
91
96
|
- lib/searchapi/resources/google_play_store.rb
|
|
@@ -98,10 +103,14 @@ files:
|
|
|
98
103
|
- lib/searchapi/resources/instagram_profile.rb
|
|
99
104
|
- lib/searchapi/resources/linkedin_ad_library.rb
|
|
100
105
|
- lib/searchapi/resources/meta_ad_library.rb
|
|
106
|
+
- lib/searchapi/resources/meta_ad_library_ad_details.rb
|
|
107
|
+
- lib/searchapi/resources/meta_ad_library_page_info.rb
|
|
108
|
+
- lib/searchapi/resources/meta_ad_library_page_search.rb
|
|
101
109
|
- lib/searchapi/resources/naver.rb
|
|
102
110
|
- lib/searchapi/resources/reddit_ad_library.rb
|
|
103
111
|
- lib/searchapi/resources/shein_search.rb
|
|
104
112
|
- lib/searchapi/resources/tiktok_ads_library.rb
|
|
113
|
+
- lib/searchapi/resources/tiktok_ads_library_advertiser_search.rb
|
|
105
114
|
- lib/searchapi/resources/tiktok_profile.rb
|
|
106
115
|
- lib/searchapi/resources/tripadvisor.rb
|
|
107
116
|
- lib/searchapi/resources/walmart_search.rb
|
|
@@ -109,6 +118,11 @@ files:
|
|
|
109
118
|
- lib/searchapi/resources/yandex.rb
|
|
110
119
|
- lib/searchapi/resources/yandex_reverse_image.rb
|
|
111
120
|
- lib/searchapi/resources/youtube.rb
|
|
121
|
+
- lib/searchapi/resources/youtube_channel.rb
|
|
122
|
+
- lib/searchapi/resources/youtube_channel_videos.rb
|
|
123
|
+
- lib/searchapi/resources/youtube_comments.rb
|
|
124
|
+
- lib/searchapi/resources/youtube_transcripts.rb
|
|
125
|
+
- lib/searchapi/resources/youtube_video.rb
|
|
112
126
|
- lib/searchapi/response.rb
|
|
113
127
|
- lib/searchapi/version.rb
|
|
114
128
|
homepage: https://github.com/aalvaaro/searchapi-ruby
|
|
@@ -134,5 +148,5 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
134
148
|
requirements: []
|
|
135
149
|
rubygems_version: 3.6.9
|
|
136
150
|
specification_version: 4
|
|
137
|
-
summary: Ruby client for SearchAPI.io -
|
|
151
|
+
summary: Ruby client for SearchAPI.io - 63 search engines in one gem
|
|
138
152
|
test_files: []
|