コンテンツにスキップ

Rust SDK

serpcheap クレートは公式の Rust クライアントです。rustls TLS(システムの OpenSSL は不要)、デフォルトで同期の blocking クライアントを使用します。

Terminal window
cargo add serpcheap
use serpcheap::{Client, SearchParams};
fn main() -> Result<(), serpcheap::Error> {
let client = Client::builder("YOUR_API_KEY").build()?;
let resp = client.search(&SearchParams::new("best running shoes").gl("us"))?;
println!("query: {}", resp.search);
for r in &resp.organic {
println!("{}. {} — {}", r.position, r.title, r.link);
}
if let Some(stats) = &resp.stats {
println!("balance: {} (cost {})", stats.balance, stats.cost);
}
Ok(())
}
let params = SearchParams::new("rust language")
.gl("gb") // country (default "us")
.hl("en") // UI language
.tbs("qdr:d") // time filter
.page(2); // 1-indexed
use std::time::Duration;
use serpcheap::{Client, ClientOptions};
let client = Client::new("YOUR_API_KEY", ClientOptions {
base_url: "https://api.serp.cheap".into(),
timeout: Duration::from_secs(15),
max_retries: 2,
})?;
use serpcheap::ErrorCode;
match client.search(&SearchParams::new("q")) {
Ok(resp) => println!("{} results", resp.organic.len()),
Err(err) => match err.code {
ErrorCode::InsufficientCredits => eprintln!("top up"),
ErrorCode::RateLimited => eprintln!("retry after {:?} ms", err.retry_after_ms),
_ if err.is_retryable() => eprintln!("transient: {err}"),
_ => eprintln!("error: {err}"),
},
}