Rust

Search API for Rust Developers

Search Google, Amazon, YouTube, Walmart, and Reddit from Rust using reqwest. Structured JSON responses. Free tier included.

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

Frequently Asked Questions

Send a POST request to the Scavio API endpoint using reqwest. Include your API key in the x-api-key header and your search query in the JSON body. The API returns structured JSON that you can parse directly.

Yes, install reqwest with: cargo add reqwest serde serde_json tokio --features reqwest/json,tokio/full. After that, you can make API calls to Scavio.

Scavio supports Google (web, news, images, shopping, maps), Amazon (12 marketplaces), YouTube (search, transcripts, metadata), and Walmart. All platforms use the same authentication and return structured JSON.

Scavio uses a simple REST API that works with any HTTP client. No framework-specific SDK is needed — use reqwest to make POST requests and parse the JSON response.

Check the HTTP status code: 200 means success, 401 means invalid API key, 429 means rate limit exceeded, and 500 means a server error. The response body includes an error message with details. See the error handling example above.

Start Building with Rust

Get your free Scavio API key and search Google, Amazon, YouTube, Walmart, and Reddit from Rust. 500 free credits/month.