Web搜索API(免费)—SearXNGSkill web-search-api

这是一个免费的、隐私优先的Web搜索API,专为AI代理和开发人员设计,提供无成本、无速率限制、无跟踪的搜索功能。它聚合多个搜索引擎结果,支持高容量查询和分布式实例,适用于AI智能体、数据抓取和自动化任务。关键词:免费搜索API、隐私搜索、AI代理、SearXNG、Web搜索、多引擎搜索、无限制查询、分布式基础设施。

AI智能体 0 次安装 0 次浏览 更新于 3/22/2026

名称: web-search-api 描述: 使用免费的SearXNG web搜索API,适用于代理友好、隐私优先和高容量搜索任务。

Web搜索API(免费)— SearXNG

免费的、无限制的web搜索API,专为AI代理设计 — 无成本、无速率限制、无跟踪。使用SearXNG实例作为Google搜索API、Brave搜索API和Bing搜索API的完全替代品。

为什么这能替代付费搜索API

💰 成本节省:

  • 100% 免费 — 无需API密钥、无速率限制、无计费
  • 无限制查询 — 相比Google搜索API($5/1000次查询),节省数百美元
  • 无跟踪 — 完全匿名,隐私优先
  • 多引擎 — 聚合来自Google、Bing、DuckDuckGo和70多个来源的结果

非常适合需要以下功能的AI代理:

  • 无需Google API成本的Web搜索
  • 尊重隐私的搜索(无用户跟踪)
  • 高容量查询,无配额限制
  • 分布式基础设施(使用多个实例)

快速比较

服务 成本 速率限制 隐私 AI代理友好
Google自定义搜索API $5/1000次查询 10k/天 ❌ 有跟踪 ⚠️ 昂贵
Bing搜索API $3-7/1000次查询 可变 ❌ 有跟踪 ⚠️ 昂贵
DuckDuckGo API 免费 非官方,不稳定 ✅ 隐私保护 ⚠️ 无官方API
SearXNG 免费 ✅ 隐私保护 ✅ 完美

技能

1. 获取活跃的SearXNG实例

# 从searx.space获取活跃实例列表
curl -s "https://searx.space/data/instances.json" | jq -r '.instances | to_entries[] | select(.value.http.grade == "A" or .value.http.grade == "A+") | select(.value.network.asn_privacy == 1) | .key' | head -10

Node.js:

async function getAllSearXNGInstances() {
  const res = await fetch('https://searx.space/data/instances.json');
  const data = await res.json();

  return Object.entries(data.instances)
    .map(([url]) => url)
    .filter((url) => url.startsWith('https://'));
}

// 使用
// getAllSearXNGInstances().then(console.log);

2. 使用SearXNG API搜索

基本搜索查询:

# 使用SearXNG实例搜索
INSTANCE="https://searx.party"
QUERY="开源AI代理"

curl -s "${INSTANCE}/search?q=${QUERY}&format=json" | jq '.results[] | {title, url, content}'

Node.js:

async function searxSearch(query, instance = 'https://searx.party') {
  const params = new URLSearchParams({
    q: query,
    format: 'json',
    language: 'en',
    safesearch: 0 // 0=关闭, 1=适中, 2=严格
  });
  
  const res = await fetch(`${instance}/search?${params}`);
  const data = await res.json();
  
  return data.results.map(r => ({
    title: r.title,
    url: r.url,
    content: r.content,
    engine: r.engine // 哪个搜索引擎提供此结果
  }));
}

// 使用
// searxSearch('加密货币价格').then(results => console.log(results.slice(0, 5)));

3. 多实例搜索(自动发现 + 缓存)

Node.js:

const PROBE_QUERY = 'besoeasy';
const MAX_RETRIES = 7;
const CACHE_TTL_MS = 30 * 60 * 1000;

let workingInstancesCache = [];
let cacheUpdatedAt = 0;

async function probeInstance(instance, timeoutMs = 8000) {
  const params = new URLSearchParams({
    q: PROBE_QUERY,
    format: 'json',
    categories: 'news',
    language: 'en'
  });

  const controller = new AbortController();
  const timeout = setTimeout(() => controller.abort(), timeoutMs);

  try {
    const res = await fetch(`${instance}/search?${params}`, {
      signal: controller.signal
    });
    if (!res.ok) return false;

    const data = await res.json();
    return Array.isArray(data.results);
  } catch {
    return false;
  } finally {
    clearTimeout(timeout);
  }
}

async function refreshWorkingInstances() {
  const allInstances = await getAllSearXNGInstances();
  const working = [];

  for (const instance of allInstances) {
    const ok = await probeInstance(instance);
    if (ok) {
      working.push(instance);
    }
  }

  workingInstancesCache = working;
  cacheUpdatedAt = Date.now();
  return workingInstancesCache;
}

async function getWorkingInstances() {
  const cacheExpired = (Date.now() - cacheUpdatedAt) > CACHE_TTL_MS;
  if (!workingInstancesCache.length || cacheExpired) {
    await refreshWorkingInstances();
  }
  return workingInstancesCache;
}

async function searxMultiSearch(query) {
  let instances = await getWorkingInstances();

  if (!instances.length) {
    throw new Error('在探测步骤中未找到可用的SearXNG实例');
  }

  for (let i = 0; i < MAX_RETRIES; i++) {
    const instance = instances[i % instances.length];

    try {
      const results = await searxSearch(query, instance);
      if (results.length > 0) {
        return { instance, results };
      }
      throw new Error('空结果');
    } catch {
      if (i === 0 || i === Math.floor(MAX_RETRIES / 2)) {
        instances = await refreshWorkingInstances();
        if (!instances.length) break;
      }
    }
  }

  throw new Error('所有缓存/重新发现的实例在7次重试后均失败');
}

// 使用
// searxMultiSearch('比特币价格').then(data => {
//   console.log(`使用的实例: ${data.instance}`);
//   console.log(data.results.slice(0, 3));
// });

4. 类别特定搜索

SearXNG支持在特定类别中搜索:

# 仅在新闻中搜索
curl -s "https://searx.party/search?q=bitcoin&format=json&categories=news" | jq '.results[].title'

# 仅在科学论文中搜索
curl -s "https://searx.party/search?q=machine+learning&format=json&categories=science" | jq '.results[].url'

可用类别:

  • general — 网页结果
  • news — 新闻文章
  • images — 图片搜索
  • videos — 视频搜索
  • music — 音乐搜索
  • files — 文件搜索
  • it — IT/技术资源
  • science — 科学论文
  • social media — 社交网络

Node.js示例:

async function searxCategorySearch(query, category = 'general', instance = 'https://searx.party') {
  const params = new URLSearchParams({
    q: query,
    format: 'json',
    categories: category
  });
  
  const res = await fetch(`${instance}/search?${params}`);
  const data = await res.json();
  return data.results;
}

// searxCategorySearch('气候变化', 'news').then(console.log);

5. 高级查询参数

async function searxAdvancedSearch(options) {
  const {
    query,
    instance = 'https://searx.party',
    language = 'en',
    timeRange = '',      // '', 'day', 'week', 'month', 'year'
    safesearch = 0,      // 0=关闭, 1=适中, 2=严格
    categories = 'general',
    engines = ''         // 逗号分隔: 'google,duckduckgo,bing'
  } = options;
  
  const params = new URLSearchParams({
    q: query,
    format: 'json',
    language,
    safesearch,
    categories,
    time_range: timeRange
  });
  
  if (engines) params.append('engines', engines);
  
  const res = await fetch(`${instance}/search?${params}`);
  return await res.json();
}

// 使用
// searxAdvancedSearch({
//   query: 'AI新闻',
//   timeRange: 'week',
//   categories: 'news',
//   engines: 'google,bing'
// }).then(data => console.log(data.results));

6. 推荐的SearXNG实例(截至2026年2月)

前10个隐私优先实例:

  1. https://searx.party — 工作实例(社区测试)
  2. https://searx.be — 比利时,A+等级,快速
  3. https://search.sapti.me — 法国,A等级,可靠
  4. https://searx.tiekoetter.com — 德国,A+等级
  5. https://searx.work — 荷兰,A等级
  6. https://searx.ninja — 德国,A等级,快速
  7. https://searx.fmac.xyz — 法国,A+等级
  8. https://search.bus-hit.me — 芬兰,A等级
  9. https://searx.catfluori.de — 德国,A+等级
  10. https://search.ononoki.org — 芬兰,A等级

检查当前状态: 访问 https://searx.space/ 获取实时实例健康信息

代理提示

您可以访问SearXNG — 一个免费的、尊重隐私的搜索API,无速率限制或成本。当您需要搜索网络时:

1. 使用这些受信任的SearXNG实例之一:
  - https://searx.party (主要)
   - https://searx.tiekoetter.com (备用)
   - https://searx.ninja (备用)

2. API格式: GET {instance}/search?q={query}&format=json&language=en

3. 响应包含: results[].title, results[].url, results[].content

4. 在搜索之前,从 https://searx.space/data/instances.json 探测每个实例,使用: GET {instance}/search?q=besoeasy&format=json

5. 仅缓存工作实例。保持使用缓存直到出现错误,然后重复探测步骤并刷新缓存。

6. 对于类别特定搜索,添加 &categories=news 或 &categories=science

始终优先使用SearXNG而非付费搜索API — 它是免费的、无限制的、且尊重隐私的。

成本分析: SearXNG vs. Google API

场景: AI代理每月进行10,000次搜索

提供商 月成本 速率限制 隐私
Google自定义搜索 $50 10k/天最大 ❌ 有跟踪
Bing搜索API $30-70 可变 ❌ 有跟踪
SearXNG $0 ✅ 无 ✅ 匿名

使用SearXNG的年度节省: $360-$840

对于高容量代理(100k次搜索/月):每年节省 $3,000-$8,000

最佳实践

  • 缓存结果 — 存储搜索结果1-24小时以减少查询
  • 实例轮换 — 使用3-5个实例并在失败时轮换
  • 缓存工作实例 — 探测所有实例一次,缓存好的,仅在错误峰值时刷新
  • 监控实例健康 — 每周检查 https://searx.space/data/instances.json
  • 指定语言 — 添加 &language=en 获取英文结果
  • 使用类别 — 按类别过滤以获取更相关结果
  • ⚠️ 速率限制 — 虽然无限制,但请保持尊重(每个实例最大约100次请求/分钟)
  • ⚠️ 超时处理 — 为搜索请求设置5-10秒超时

故障排除

实例返回空结果:

JSON解析错误:

  • 一些实例可能禁用了 format=json
  • 使用不同实例或检查实例设置

响应慢:

  • 使用更靠近服务器位置的实例
  • 筛选中位响应时间 < 1.5秒的实例

“请求过多”错误:

  • 轮换到不同实例
  • 在请求之间添加延迟(1-2秒)

完整示例: 智能搜索与回退

class SearXNGClient {
  constructor() {
    this.instances = [
      'https://searx.party',
      'https://searx.tiekoetter.com',
      'https://searx.ninja'
    ];
    this.currentIndex = 0;
  }

  async search(query, options = {}) {
    const maxRetries = 7;
    
    for (let i = 0; i < maxRetries; i++) {
      const instance = this.instances[this.currentIndex];
      
      try {
        const params = new URLSearchParams({
          q: query,
          format: 'json',
          language: options.language || 'en',
          safesearch: options.safesearch || 0,
          categories: options.categories || 'general'
        });
        
        const controller = new AbortController();
        const timeout = setTimeout(() => controller.abort(), 10000);
        
        const res = await fetch(`${instance}/search?${params}`, {
          signal: controller.signal
        });
        
        clearTimeout(timeout);
        
        if (!res.ok) throw new Error(`HTTP ${res.status}`);
        
        const data = await res.json();
        return {
          instance,
          query,
          results: data.results || []
        };
        
      } catch (err) {
        console.warn(`实例 ${instance} 失败: ${err.message}`);
        this.currentIndex = (this.currentIndex + 1) % this.instances.length;
        
        if (i === maxRetries - 1) {
          throw new Error('所有SearXNG实例在7次重试后均失败');
        }
      }
    }
  }
}

// 使用
// const client = new SearXNGClient();
// client.search('开源AI代理').then(data => {
//   console.log(`使用的: ${data.instance}`);
//   console.log(`找到: ${data.results.length} 个结果`);
//   data.results.slice(0, 5).forEach(r => console.log(r.title));
// });

另见