Scavio provides a REST API that you can call from any Rust application. Send a POST request with your query, get structured JSON back. Here is how to use every platform.
Google Search
Web search with knowledge graph, PAA, and AI overviews.
use reqwest::Client;
use serde_json::{json, Value};
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
let api_key = "your_scavio_api_key";
let client = Client::new();
let response = client
.post("https://api.scavio.dev/api/v1/search")
.header("x-api-key", api_key)
.json(&json!({ "query": query }))
.send()
.await?;
let data: Value = response.json().await?;
println!("{}", serde_json::to_string_pretty(&data)?);
Ok(())
}Amazon Search
Product search with prices, ratings, and reviews.
use reqwest::Client;
use serde_json::{json, Value};
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
let api_key = "your_scavio_api_key";
let client = Client::new();
let response = client
.post("https://api.scavio.dev/api/v1/amazon/search")
.header("x-api-key", api_key)
.json(&json!({ "query": query, "marketplace": "us" }))
.send()
.await?;
let data: Value = response.json().await?;
println!("{}", serde_json::to_string_pretty(&data)?);
Ok(())
}Reddit Search
Community, posts & threaded comments from any subreddit.
use reqwest::Client;
use serde_json::{json, Value};
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
let api_key = "your_scavio_api_key";
let client = Client::new();
let response = client
.post("https://api.scavio.dev/api/v1/reddit/search")
.header("x-api-key", api_key)
.json(&json!({ "query": query, "sort": "new" }))
.send()
.await?;
let data: Value = response.json().await?;
println!("{}", serde_json::to_string_pretty(&data)?);
Ok(())
}YouTube Search
Video search with transcripts and metadata.
use reqwest::Client;
use serde_json::{json, Value};
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
let api_key = "your_scavio_api_key";
let client = Client::new();
let response = client
.post("https://api.scavio.dev/api/v1/youtube/search")
.header("x-api-key", api_key)
.json(&json!({ "query": query }))
.send()
.await?;
let data: Value = response.json().await?;
println!("{}", serde_json::to_string_pretty(&data)?);
Ok(())
}Walmart Search
Product search with pricing and fulfillment data.
use reqwest::Client;
use serde_json::{json, Value};
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
let api_key = "your_scavio_api_key";
let client = Client::new();
let response = client
.post("https://api.scavio.dev/api/v1/walmart/search")
.header("x-api-key", api_key)
.json(&json!({ "query": query }))
.send()
.await?;
let data: Value = response.json().await?;
println!("{}", serde_json::to_string_pretty(&data)?);
Ok(())
}Error Handling
The API returns standard HTTP status codes. Check for 200 (success), 401 (invalid API key), 429 (rate limit), and 500 (server error). The response body always includes a descriptive error message.
Next Steps
- Quickstart guide — get your API key and make your first request
- Rate limits — understand credit usage and limits
- Error reference — full list of error codes and troubleshooting