serpcheap-rails
Rails integration for the serp.cheap Google Search API — real-time Google SERP data (organic results, ads, knowledge graph, page scraping, rank tracking) wrapped with a Railtie, Rails.cache result caching, credentials/ENV config, and an ActiveJob.
It's the cheapest Google Search API we know of — $0.0003 per cached search, $0.0006 fresh, no monthly minimum (~10× cheaper than SerpApi).
Install
# Gemfile
gem "serpcheap-rails"
Set your API key (get one at app.serp.cheap) via SERPCHEAP_API_KEY, Rails credentials, or an initializer:
# config/initializers/serpcheap.rb
SerpCheap::Rails.configure do |c|
c.api_key = Rails.application.credentials.serpcheap_api_key
# c.cache_ttl = 3600
# c.cache_enabled = true
end
You can also configure it the Rails way in any environment file:
config.serpcheap.api_key = ENV["SERPCHEAP_API_KEY"]
config.serpcheap.cache_ttl = 1.hour
Usage
results = SerpCheap::Rails.search("best running shoes", gl: "us")
page = SerpCheap::Rails.scrape("https://example.com")
rank = SerpCheap::Rails.rank("example.com", "best running shoes")
Results are cached in Rails.cache by default (keyed by query + options) so repeat calls don't spend credits. Reach the raw, uncached SDK client when you need it:
SerpCheap::Rails.raw.search_pages("best running shoes", from: 1, to: 3)
Background cache warming
Pre-warm the cache off the request cycle with the bundled ActiveJob:
SerpCheap::Rails::SearchJob.perform_later("best running shoes", "gl" => "br")
Configuration
| Setting | Default | Description |
|---|---|---|
api_key |
ENV["SERPCHEAP_API_KEY"] |
API key (required) |
base_url |
https://api.serp.cheap |
API base URL |
timeout_ms |
15000 |
Per-request timeout |
max_retries |
2 |
Retry count on transient errors |
cache_enabled |
true |
Toggle Rails.cache result caching |
cache_store |
Rails.cache |
Any ActiveSupport::Cache::Store |
cache_ttl |
3600 |
Cache TTL in seconds |
License
MIT