A3S Docs
A3S Search

Queries

Construct search queries with filters, categories, language, and pagination

Queries

SearchQuery controls what to search for and how. All fields except query are optional.

Basic Query

use a3s_search::SearchQuery;

let query = SearchQuery::new("rust programming");
let results = search.search(query).await?;
response = await search.search("rust programming")
const response = await search.search('rust programming');

Search with Options

use a3s_search::{SearchQuery, SafeSearch, TimeRange, EngineCategory};

let query = SearchQuery::new("rust async runtime")
    .with_categories(vec![EngineCategory::General])
    .with_language("en-US")
    .with_safesearch(SafeSearch::Moderate)
    .with_page(1)
    .with_time_range(TimeRange::Month)
    .with_engines(vec!["ddg".into(), "brave".into(), "bing".into()]);

SearchQuery builder methods:

Prop

Type

response = await search.search("rust async runtime",
    engines=["ddg", "brave", "bing"],
    limit=5,
    timeout=15,
)

SDK search options:

Prop

Type

const response = await search.search('rust async runtime', {
  engines: ['ddg', 'brave', 'bing'],
  limit: 5,
  timeout: 15,
});

SDK search options:

Prop

Type

Target Specific Engines

// Only DuckDuckGo and Bing
let query = SearchQuery::new("rust")
    .with_engines(vec!["ddg".into(), "bing".into()]);

// Only Chinese engines
let query = SearchQuery::new("Rust 编程")
    .with_engines(vec!["sogou".into(), "360".into()]);

Engines not in the list are skipped for this query. If with_engines is not called, all registered engines are queried.

# International engines
response = await search.search("rust", engines=["ddg", "brave", "bing", "wiki"])

# Chinese engines
response = await search.search("Rust 编程", engines=["sogou", "360"])
// International engines
const response = await search.search('rust', {
  engines: ['ddg', 'brave', 'bing', 'wiki'],
});

// Chinese engines
const response2 = await search.search('Rust 编程', {
  engines: ['sogou', '360'],
});

A3SSearch API (Python / Node.js)

Prop

Type

All methods are async except set_proxy_pool_enabled and is_proxy_pool_enabled.

Prop

Type

Categories

pub enum EngineCategory {
    General,
    Images,
    News,
    Videos,
    Science,
}

Engines declare which categories they support via EngineConfig.categories. When a query specifies categories, only engines matching those categories are queried.

pub enum SafeSearch {
    Off,
    Moderate,
    Strict,
}

Only engines with safesearch: true in their config respect this setting. Currently supported by DuckDuckGo, Brave, Bing, and Google.

Time Range

pub enum TimeRange {
    Day,
    Week,
    Month,
    Year,
}

Filters results by recency. Engine support varies.

Pagination

let page1 = SearchQuery::new("rust").with_page(1);
let page2 = SearchQuery::new("rust").with_page(2);

Only engines with paging: true support pagination (DuckDuckGo, Brave, Bing, Google).

# Python SDK does not expose a page parameter directly.
# Use the Rust crate for paginated queries.
// Node.js SDK does not expose a page parameter directly.
// Use the Rust crate for paginated queries.

On this page