Integrate search data into your Ruby application. This library is the official wrapper for SerpApi (https://serpapi.com).
SerpApi supports Google, Google Maps, Google Shopping, Baidu, Yandex, Yahoo, eBay, App Stores, and more.
Python3 must be installed.
$ pip install serpapiimport serpapi
client = serpapi.Client({
'api_key': "secret_api_key", # set personal API key from serpapi.com/dashboard
'engine': "google", # set default search engine
})
results = client.search({
q: "coffee", # google query
location: "Austin,TX" # force the location [optional]
})
print(results['organic_results'])This example runs a search for "coffee" on Google. It then returns the results as a regular Ruby Hash. See the playground to generate your own code.
TODO update this specification
SerpApi Client uses urllib3 under the hood. Optionally, rhe HTTP connection can be tuned:
- timeout : connection timeout by default 60s
- retries : attempt to reconnect if the connection failed by default: False. serpapi is reliable at 99.99% but your company network might not be as stable.
parameter = {
retries: 5,
timeout: 4.0,
# extra user parameters
}for more details: [URL LIB3 documentation]](https://urllib3.readthedocs.io/en/stable/user-guide.html)
import serpapi
import pprint
import os
client = serpapi.Client({
'engine': 'bing',
'api_key': os.getenv("API_KEY")
})
data = client.search({
'q': 'coffee',
})
pp = pprint.PrettyPrinter(indent=2)
pp.pprint(data['organic_results'])
# os.getenv("API_KEY") is your secret API Key
# copy/paste from [http://serpapi.com/dashboard] to your bash
# ```export API_KEY="your_secure_api_key"```- test: /Users/victor/Project/serpapi/serpapi-python/tests/example_search_bing_test.py see: https://serpapi.com/bing-search-api
import serpapi
import pprint
import os
client = serpapi.Client({
'engine': 'baidu',
'api_key': os.getenv("API_KEY")
})
data = client.search({
'q': 'coffee',
})
pp = pprint.PrettyPrinter(indent=2)
pp.pprint(data['organic_results'])
# os.getenv("API_KEY") is your secret API Key
# copy/paste from [http://serpapi.com/dashboard] to your bash
# ```export API_KEY="your_secure_api_key"```- test: /Users/victor/Project/serpapi/serpapi-python/tests/example_search_baidu_test.py see: https://serpapi.com/baidu-search-api
import serpapi
import pprint
import os
client = serpapi.Client({
'engine': 'yahoo',
'api_key': os.getenv("API_KEY")
})
data = client.search({
'p': 'coffee',
})
pp = pprint.PrettyPrinter(indent=2)
pp.pprint(data['organic_results'])
# os.getenv("API_KEY") is your secret API Key
# copy/paste from [http://serpapi.com/dashboard] to your bash
# ```export API_KEY="your_secure_api_key"```- test: /Users/victor/Project/serpapi/serpapi-python/tests/example_search_yahoo_test.py see: https://serpapi.com/yahoo-search-api
import serpapi
import pprint
import os
client = serpapi.Client({
'engine': 'youtube',
'api_key': os.getenv("API_KEY")
})
data = client.search({
'search_query': 'coffee',
})
pp = pprint.PrettyPrinter(indent=2)
pp.pprint(data['video_results'])
# os.getenv("API_KEY") is your secret API Key
# copy/paste from [http://serpapi.com/dashboard] to your bash
# ```export API_KEY="your_secure_api_key"```- test: /Users/victor/Project/serpapi/serpapi-python/tests/example_search_youtube_test.py see: https://serpapi.com/youtube-search-api
import serpapi
import pprint
import os
client = serpapi.Client({
'engine': 'walmart',
'api_key': os.getenv("API_KEY")
})
data = client.search({
'query': 'coffee',
})
pp = pprint.PrettyPrinter(indent=2)
pp.pprint(data['organic_results'])
# os.getenv("API_KEY") is your secret API Key
# copy/paste from [http://serpapi.com/dashboard] to your bash
# ```export API_KEY="your_secure_api_key"```- test: /Users/victor/Project/serpapi/serpapi-python/tests/example_search_walmart_test.py see: https://serpapi.com/walmart-search-api
import serpapi
import pprint
import os
client = serpapi.Client({
'engine': 'ebay',
'api_key': os.getenv("API_KEY")
})
data = client.search({
'_nkw': 'coffee',
})
pp = pprint.PrettyPrinter(indent=2)
pp.pprint(data['organic_results'])
# os.getenv("API_KEY") is your secret API Key
# copy/paste from [http://serpapi.com/dashboard] to your bash
# ```export API_KEY="your_secure_api_key"```- test: /Users/victor/Project/serpapi/serpapi-python/tests/example_search_ebay_test.py see: https://serpapi.com/ebay-search-api
import serpapi
import pprint
import os
client = serpapi.Client({
'engine': 'naver',
'api_key': os.getenv("API_KEY")
})
data = client.search({
'query': 'coffee',
})
pp = pprint.PrettyPrinter(indent=2)
pp.pprint(data['ads_results'])
# os.getenv("API_KEY") is your secret API Key
# copy/paste from [http://serpapi.com/dashboard] to your bash
# ```export API_KEY="your_secure_api_key"```- test: /Users/victor/Project/serpapi/serpapi-python/tests/example_search_naver_test.py see: https://serpapi.com/naver-search-api
import serpapi
import pprint
import os
client = serpapi.Client({
'engine': 'home_depot',
'api_key': os.getenv("API_KEY")
})
data = client.search({
'q': 'table',
})
pp = pprint.PrettyPrinter(indent=2)
pp.pprint(data['products'])
# os.getenv("API_KEY") is your secret API Key
# copy/paste from [http://serpapi.com/dashboard] to your bash
# ```export API_KEY="your_secure_api_key"```- test: /Users/victor/Project/serpapi/serpapi-python/tests/example_search_home_depot_test.py see: https://serpapi.com/home-depot-search-api
import serpapi
import pprint
import os
client = serpapi.Client({
'engine': 'apple_app_store',
'api_key': os.getenv("API_KEY")
})
data = client.search({
'term': 'coffee',
})
pp = pprint.PrettyPrinter(indent=2)
pp.pprint(data['organic_results'])
# os.getenv("API_KEY") is your secret API Key
# copy/paste from [http://serpapi.com/dashboard] to your bash
# ```export API_KEY="your_secure_api_key"```- test: /Users/victor/Project/serpapi/serpapi-python/tests/example_search_apple_app_store_test.py see: https://serpapi.com/apple-app-store
import serpapi
import pprint
import os
client = serpapi.Client({
'engine': 'duckduckgo',
'api_key': os.getenv("API_KEY")
})
data = client.search({
'q': 'coffee',
})
pp = pprint.PrettyPrinter(indent=2)
pp.pprint(data['organic_results'])
# os.getenv("API_KEY") is your secret API Key
# copy/paste from [http://serpapi.com/dashboard] to your bash
# ```export API_KEY="your_secure_api_key"```- test: /Users/victor/Project/serpapi/serpapi-python/tests/example_search_duckduckgo_test.py see: https://serpapi.com/duckduckgo-search-api
import serpapi
import pprint
import os
client = serpapi.Client({
'engine': 'google',
'api_key': os.getenv("API_KEY")
})
data = client.search({
'q': 'coffee',
'engine': 'google',
})
pp = pprint.PrettyPrinter(indent=2)
pp.pprint(data['organic_results'])
# os.getenv("API_KEY") is your secret API Key
# copy/paste from [http://serpapi.com/dashboard] to your bash
# ```export API_KEY="your_secure_api_key"```- test: /Users/victor/Project/serpapi/serpapi-python/tests/example_search_google_test.py see: https://serpapi.com/search-api
import serpapi
import pprint
import os
client = serpapi.Client({
'engine': 'google_scholar',
'api_key': os.getenv("API_KEY")
})
data = client.search({
'q': 'coffee',
})
pp = pprint.PrettyPrinter(indent=2)
pp.pprint(data['organic_results'])
# os.getenv("API_KEY") is your secret API Key
# copy/paste from [http://serpapi.com/dashboard] to your bash
# ```export API_KEY="your_secure_api_key"```- test: /Users/victor/Project/serpapi/serpapi-python/tests/example_search_google_scholar_test.py see: https://serpapi.com/google-scholar-api
import serpapi
import pprint
import os
client = serpapi.Client({
'engine': 'google_autocomplete',
'api_key': os.getenv("API_KEY")
})
data = client.search({
'q': 'coffee',
})
pp = pprint.PrettyPrinter(indent=2)
pp.pprint(data['suggestions'])
# os.getenv("API_KEY") is your secret API Key
# copy/paste from [http://serpapi.com/dashboard] to your bash
# ```export API_KEY="your_secure_api_key"```- test: /Users/victor/Project/serpapi/serpapi-python/tests/example_search_google_autocomplete_test.py see: https://serpapi.com/google-autocomplete-api
import serpapi
import pprint
import os
client = serpapi.Client({
'engine': 'google_product',
'api_key': os.getenv("API_KEY")
})
data = client.search({
'q': 'coffee',
'product_id': '4172129135583325756',
})
pp = pprint.PrettyPrinter(indent=2)
pp.pprint(data['product_results'])
# os.getenv("API_KEY") is your secret API Key
# copy/paste from [http://serpapi.com/dashboard] to your bash
# ```export API_KEY="your_secure_api_key"```- test: /Users/victor/Project/serpapi/serpapi-python/tests/example_search_google_product_test.py see: https://serpapi.com/google-product-api
import serpapi
import pprint
import os
client = serpapi.Client({
'engine': 'google_reverse_image',
'api_key': os.getenv("API_KEY")
})
data = client.search({
'image_url': 'https://i.imgur.com/5bGzZi7.jpg',
})
pp = pprint.PrettyPrinter(indent=2)
pp.pprint(data['image_sizes'])
# os.getenv("API_KEY") is your secret API Key
# copy/paste from [http://serpapi.com/dashboard] to your bash
# ```export API_KEY="your_secure_api_key"```- test: /Users/victor/Project/serpapi/serpapi-python/tests/example_search_google_reverse_image_test.py see: https://serpapi.com/google-reverse-image
import serpapi
import pprint
import os
client = serpapi.Client({
'engine': 'google_events',
'api_key': os.getenv("API_KEY")
})
data = client.search({
'q': 'coffee',
})
pp = pprint.PrettyPrinter(indent=2)
pp.pprint(data['events_results'])
# os.getenv("API_KEY") is your secret API Key
# copy/paste from [http://serpapi.com/dashboard] to your bash
# ```export API_KEY="your_secure_api_key"```- test: /Users/victor/Project/serpapi/serpapi-python/tests/example_search_google_events_test.py see: https://serpapi.com/google-events-api
import serpapi
import pprint
import os
client = serpapi.Client({
'engine': 'google_local_services',
'api_key': os.getenv("API_KEY")
})
data = client.search({
'q': 'Electrician',
'data_cid': 'ChIJOwg_06VPwokRYv534QaPC8g',
})
pp = pprint.PrettyPrinter(indent=2)
pp.pprint(data['local_ads'])
# os.getenv("API_KEY") is your secret API Key
# copy/paste from [http://serpapi.com/dashboard] to your bash
# ```export API_KEY="your_secure_api_key"```- test: /Users/victor/Project/serpapi/serpapi-python/tests/example_search_google_local_services_test.py see: https://serpapi.com/google-local-services-api
import serpapi
import pprint
import os
client = serpapi.Client({
'engine': 'google_maps',
'api_key': os.getenv("API_KEY")
})
data = client.search({
'q': 'pizza',
'll': '@40.7455096,-74.0083012,15.1z',
'type': 'search',
})
pp = pprint.PrettyPrinter(indent=2)
pp.pprint(data['local_results'])
# os.getenv("API_KEY") is your secret API Key
# copy/paste from [http://serpapi.com/dashboard] to your bash
# ```export API_KEY="your_secure_api_key"```- test: /Users/victor/Project/serpapi/serpapi-python/tests/example_search_google_maps_test.py see: https://serpapi.com/google-maps-api
import serpapi
import pprint
import os
client = serpapi.Client({
'engine': 'google_jobs',
'api_key': os.getenv("API_KEY")
})
data = client.search({
'q': 'coffee',
})
pp = pprint.PrettyPrinter(indent=2)
pp.pprint(data['jobs_results'])
# os.getenv("API_KEY") is your secret API Key
# copy/paste from [http://serpapi.com/dashboard] to your bash
# ```export API_KEY="your_secure_api_key"```- test: /Users/victor/Project/serpapi/serpapi-python/tests/example_search_google_jobs_test.py see: https://serpapi.com/google-jobs-api
import serpapi
import pprint
import os
client = serpapi.Client({
'engine': 'google_play',
'api_key': os.getenv("API_KEY")
})
data = client.search({
'q': 'kite',
'store': 'apps',
})
pp = pprint.PrettyPrinter(indent=2)
pp.pprint(data['organic_results'])
# os.getenv("API_KEY") is your secret API Key
# copy/paste from [http://serpapi.com/dashboard] to your bash
# ```export API_KEY="your_secure_api_key"```- test: /Users/victor/Project/serpapi/serpapi-python/tests/example_search_google_play_test.py see: https://serpapi.com/google-play-api
import serpapi
import pprint
import os
client = serpapi.Client({
'engine': 'google_images',
'api_key': os.getenv("API_KEY")
})
data = client.search({
'engine': 'google_images',
'tbm': 'isch',
'q': 'coffee',
})
pp = pprint.PrettyPrinter(indent=2)
pp.pprint(data['images_results'])
# os.getenv("API_KEY") is your secret API Key
# copy/paste from [http://serpapi.com/dashboard] to your bash
# ```export API_KEY="your_secure_api_key"```- test: /Users/victor/Project/serpapi/serpapi-python/tests/example_search_google_images_test.py see: https://serpapi.com/images-results
TODO update this section
- High code quality
- KISS principles
- Brand centric instead of search engine based
- No hard coded logic per search engine
- Simple HTTP client (lightweight, reduced dependency)
- No magic default values
- Thread safe
- Easy to extends
- Defensive code style (raise custom exception)
- TDD
- Best API coding pratice per platform
The API design was inpired by the most popular Python packages.
- urllib3 - https://github.com/urllib3/urllib3
- Boto3 - https://github.com/boto/boto3
- 0 lint issues using pylint
make lint - 99% code coverage running
make test - 100% test passing:
make test
classDiagram
CustomClient *-- Client
HttpClient <-- Client
HttpClient *-- urllib3
HttpClient *-- ObjectDecoder
class Client {
engine: String
api_key: String
parameter: Hash
search()
html()
location()
search_archive()
account()
}
class HttpClient {
start()
decode()
}
class urllib3 {
request()
}
sequenceDiagram
Client->>SerpApi.com: search() : http request
SerpApi.com-->>SerpApi.com: query search engine
SerpApi.com-->>SerpApi.com: parse HTML into JSON
SerpApi.com-->>Client: JSON payload
Client-->>Client: decode JSON into Dict
This project is automated using a good old Makefile.
To pipe-clean the project run this:
make
Open Makefile for more details.