AnyCrawl

Search

API SERP để truy vấn công cụ tìm kiếm và nhận kết quả có cấu trúc.

Giới thiệu

API Search của AnyCrawl cho phép truy cập có lập trình kết quả từ nhiều công cụ tìm kiếm. Xây dựng cho LLM, trả dữ liệu sạch, có cấu trúc, tối ưu cho xử lý và phân tích AI.

API trả dữ liệu ngay và đồng bộ — không cần polling hay webhook. Hỗ trợ nhiều công cụ tìm kiếmlấy nhiều trang kết quả trong một request để thu thập dữ liệu đầy đủ.

Tính năng cốt lõi

  • Đa engine: Hiện hỗ trợ Google, dự kiến thêm engine khác
  • Tối ưu LLM: JSON có cấu trúc, phù hợp xử lý AI
  • Đa ngôn ngữ: Tìm theo ngôn ngữ và khu vực khác nhau
  • Nhiều trang kết quả: Lấy nhiều trang kết quả trong một request
  • Hiệu năng cao: Đồng thời cao gốc với xử lý bất đồng bộ
  • Phản hồi tức thì: API đồng bộ — nhận kết quả ngay không cần polling
  • Kết quả đầy đủ: Trả cả kết quả tìm kiếm và gợi ý

Endpoint API

POST https://api.anycrawl.dev/v1/search

Ví dụ sử dụng

Tìm kiếm cơ bản (Google mặc định)

curl -X POST "https://api.anycrawl.dev/v1/search" \
  -H "Authorization: Bearer <your-api-key>" \
  -H "Content-Type": "application/json" \
  -d '{
    "query": "OpenAI ChatGPT"
  }'

Tìm kiếm nhiều trang

curl -X POST "https://api.anycrawl.dev/v1/search" \
  -H "Authorization: Bearer <your-api-key>" \
  -H "Content-Type": "application/json" \
  -d '{
    "query": "machine learning tutorials",
    "pages": 3,
    "limit": 10
  }'

Tìm kiếm theo ngôn ngữ/khu vực

curl -X POST "https://api.anycrawl.dev/v1/search" \
  -H "Authorization: Bearer <your-api-key>" \
  -H "Content-Type": "application/json" \
  -d '{
    "query": "AnyCrawl",
    "lang": "zh",
    "pages": 2
  }'

Phân trang tìm kiếm

curl -X POST "https://api.anycrawl.dev/v1/search" \
  -H "Authorization: Bearer <your-api-key>" \
  -H "Content-Type": "application/json" \
  -d '{
    "query": "web scraping tools",
    "offset": 20,
    "limit": 10
  }'
curl -X POST "https://api.anycrawl.dev/v1/search" \
  -H "Authorization: Bearer <your-api-key>" \
  -H "Content-Type": "application/json" \
  -d '{
    "query": "educational content",
    "safe_search": 0
  }'

Tham số request

ParameterTypeRequiredDefaultDescription
querystringYes-Chuỗi truy vấn tìm kiếm cần thực thi
template_idstringNo-template_id cho lần tìm kiếm này
variablesobjectNo-Biến template (chỉ khi có template_id)
engineenumNogoogleCông cụ tìm kiếm. Hiện hỗ trợ: google
limitnumberNo10Số kết quả tối đa mỗi trang
offsetnumberNo0Số kết quả bỏ qua (phân trang)
pagesnumberNo1Số trang kết quả tìm kiếm (tối thiểu: 1, tối đa: 20)
langstringNoenLocale ngôn ngữ cho kết quả (ví dụ 'en', 'zh', 'es', 'fr')
countrystringNo-Locale quốc gia cho kết quả (ví dụ 'US', 'GB', 'CN')
timeRangeenumNo-Lọc khoảng thời gian: day, week, month, year
sourcesenumNo-Nguồn tìm: web, images, news (SearXNG)
safe_searchnumber | nullNonullMức tìm kiếm an toàn Google: 0 (tắt), 1 (vừa), 2 (chặt), hoặc null (mặc định). Chỉ áp dụng Google.

Tùy chọn: scrape_options cho URL kết quả

Khi có, mỗi URL kết quả có thể được scrape với các tùy chọn đó (cùng trường /v1/scrape, trừ url top-level). Lưu ý: tùy chọn chỉ trình duyệt bị bỏ qua khi scrape không dùng trình duyệt.

FieldTypeDefaultNotes
engineenum-Engine scrape cho URL kết quả: auto, cheerio, playwright, puppeteer
formatsarray of enum["markdown"]Định dạng đầu ra: markdown, html, text, screenshot, screenshot@fullPage, rawHtml, json, summary, links
timeoutnumber60000Timeout mỗi request (ms)
wait_fornumber-Trễ trước khi trích (ms); chỉ engine trình duyệt; thấp hơn wait_for_selector
wait_untilenum-Điều kiện chờ điều hướng: load, domcontentloaded, networkidle, commit
wait_for_selectorstring, object, or array-Chờ selector (chỉ engine trình duyệt). Chuỗi CSS, object { selector: string, state?: "attached" | "visible" | "hidden" | "detached", timeout?: number }, hoặc mảng. Mỗi mục chờ lần lượt. Ưu tiên hơn wait_for.
include_tagsarray of string-Chỉ gồm phần tử khớp CSS selector
exclude_tagsarray of string-Loại phần tử khớp CSS selector
only_main_contentbooleantrueChỉ trích nội dung chính (include_tags ưu tiên hơn)
proxystring (URI)-URL proxy tùy chọn
json_optionsobject-Trích JSON có cấu trúc (schema, user_prompt, schema_name, schema_description)
extract_sourceenummarkdownNguồn trích JSON: markdown (mặc định) hoặc html
ocr_optionsbooleanfalseOCR cho ảnh markdown. Ảnh hưởng markdown, không html/rawHtml.
max_agenumber-Tuổi cache tối đa (ms). 0 bỏ đọc cache; bỏ trống: mặc định máy chủ
store_in_cachebooleantrueCó ghi Page Cache cho mỗi lần scrape kết quả hay không

Công cụ tìm kiếm được hỗ trợ

google (mặc định)

  • Khi nào: Tìm web tổng quát, kết quả đầy đủ
  • Ưu điểm: Kết quả toàn diện, hỗ trợ đa ngôn ngữ và khu vực
  • Tính năng: Trả kết quả và gợi ý. Hỗ trợ lọc tìm kiếm an toàn (tắt/vừa/chặt)
  • Nên dùng: Tìm web chung, nghiên cứu, khám phá nội dung
  • Safe Search: Tham số safe_search: 0 (tắt), 1 (vừa), 2 (chặt), hoặc null (mặc định)

Định dạng phản hồi

Phản hồi thành công (HTTP 200)

Tìm kiếm thành công

{
    "success": true,
    "data": [
        {
            "title": "AlsoAsked: People Also Ask keyword research tool",
            "url": "https://alsoasked.com/",
            "description": "Find the questions people also ask. Enter a question, brand or search query. e.g. 'keyword research'.",
            "source": "Google Search Result"
        },
        {
            "title": "OpenAI ChatGPT Features and Benefits",
            "url": "https://openai.com/chatgpt",
            "description": "ChatGPT is an AI assistant that can help with writing, research, and problem-solving.",
            "source": "Google Search Result"
        },
        {
            "title": "Keyword tool",
            "source": "Google Suggestions"
        }
    ]
}

Loại kết quả tìm kiếm

API trả hai loại:

  1. Kết quả tìm kiếm: Đủ title, URL, mô tả và nguồn
  2. Gợi ý tìm kiếm: Gợi ý truy vấn liên quan từ công cụ tìm kiếm

Phản hồi lỗi

400 - Lỗi xác thực

{
    "success": false,
    "error": "Validation error",
    "details": {
        "issues": [
            {
                "field": "engine",
                "message": "Invalid enum value. Expected 'google', received 'invalid'",
                "code": "invalid_enum_value"
            }
        ],
        "messages": ["Invalid enum value. Expected 'google', received 'invalid'"]
    }
}

401 - Không được xác thực (API key)

{
    "success": false,
    "error": "Invalid API key"
}

402 - Cần thanh toán

{
    "success": false,
    "error": "Insufficient credits. Please upgrade your plan or purchase more credits."
}

Thực hành tốt

Hướng dẫn chọn công cụ tìm kiếm

  1. Tìm web chung → Dùng google (hiện là engine duy nhất được hỗ trợ)
  2. Tìm đa ngôn ngữ → Đặt lang phù hợp
  3. Nghiên cứu sâu → Dùng nhiều trang để có thêm kết quả

Tối ưu hiệu năng

  • Gộp request: Dùng pages để lấy nhiều trang trong một lần gọi thay vì gọi riêng lẻ
  • Nhắm ngôn ngữ: Chỉ định ngôn ngữ cho kết quả theo khu vực và bản địa hóa
  • Tối ưu truy vấn: Dùng từ khóa và cụm từ cụ thể để chất lượng kết quả tốt hơn

Xử lý lỗi

try {
    const response = await fetch("/v1/search", {
        method: "POST",
        headers: {
            Authorization: "Bearer YOUR_API_KEY",
            "Content-Type": "application/json",
        },
        body: JSON.stringify({
            query: "artificial intelligence",
            pages: 2,
        }),
    });

    const result = await response.json();

    if (result.success) {
        // Handle successful result
        console.log("Found results:", result.data.length);

        // Separate search results from suggestions
        const searchResults = result.data.filter((item) => item.url);
        const suggestions = result.data.filter((item) => !item.url);

        console.log("Search Results:", searchResults.length);
        console.log("Suggestions:", suggestions.length);
    } else {
        // Handle search failure
        console.error("Search failed:", result.error);
    }
} catch (error) {
    // Handle network error
    console.error("Request failed:", error);
}

Dùng đồng thời cao

API hỗ trợ đồng thời cao gốc. Bạn có thể gửi nhiều request tìm kiếm đồng thời mà không lo giới hạn tốc độ:

// Concurrent searching example
const queries = ["machine learning", "artificial intelligence", "data science"];

const searchPromises = queries.map((query) =>
    fetch("/v1/search", {
        method: "POST",
        headers: {
            Authorization: "Bearer YOUR_API_KEY",
            "Content-Type": "application/json",
        },
        body: JSON.stringify({ query, engine: "google", pages: 2 }),
    }).then((res) => res.json())
);

// All requests execute concurrently and return immediately
const results = await Promise.all(searchPromises);
console.log(`Completed ${results.length} searches simultaneously`);

Giới hạn tốc độ và credit

  • Mỗi request tìm kiếm tiêu credit theo số trang yêu cầu
  • Tiêu thụ credit = số trang (ví dụ pages: 3 = 3 credit)
  • Không giới hạn tốc độ cho request đồng thời — API hỗ trợ đồng thời cao gốc
  • Theo dõi credit qua header phản hồi API

Câu hỏi thường gặp

Hỏi: Khi nào nên dùng cài đặt ngôn ngữ khác nhau?

Đáp:

  • Tiếng Anh (en): Kết quả toàn cầu và nội dung quốc tế
  • Tiếng Trung (zh): Nội dung tiếng Trung và kết quả hướng Trung Quốc
  • Biến thể khu vực (ví dụ en-GB, fr-CA): Kết quả theo quốc gia và bản địa hóa

Hỏi: Vì sao một số tìm kiếm trả ít kết quả hơn dự kiến?

Đáp: Có thể do:

  • Truy vấn quá cụ thể hoặc từ hiếm
  • Ngôn ngữ truy vấn không khớp lang
  • Hạn chế của công cụ tìm kiếm với chủ đề hoặc khu vực
  • Sự cố mạng

Hỏi: Xử lý tìm kiếm cần khu vực cụ thể?

Đáp: Hiện API tự chọn khu vực phù hợp dựa trên lang. Gợi ý:

  • Dùng mã ngôn ngữ khớp khu vực đích (ví dụ en-GB cho kết quả UK)
  • Thêm thuật ngữ theo khu vực vào truy vấn khi cần

Hỏi: Khác biệt giữa kết quả tìm kiếm và gợi ý?

Đáp:

  • Kết quả tìm kiếm: Đủ title, URL, mô tả, nguồn
  • Gợi ý: Truy vấn liên quan không có URL, hữu ích để mở rộng truy vấn

Hỏi: Có giới hạn tốc độ cho tìm kiếm đồng thời không?

Đáp: Không, API hỗ trợ đồng thời cao gốc. Có thể gửi nhiều request đồng thời không lo rate limit; mọi request trả dữ liệu ngay.

Hỗ trợ ngôn ngữ và khu vực

API Search hỗ trợ nhiều ngôn ngữ và khu vực qua tham số lang. Dưới đây là các locale được hỗ trợ:

Ngôn ngữ chính

  • all - Mọi ngôn ngữ

Tiếng Anh 🌐

  • en - Tiếng Anh (toàn cầu)
  • en-AU - Tiếng Anh (Úc) 🇦🇺
  • en-CA - Tiếng Anh (Canada) 🇨🇦
  • en-GB - Tiếng Anh (Vương quốc Anh) 🇬🇧
  • en-IE - Tiếng Anh (Ireland) 🇮🇪
  • en-IN - Tiếng Anh (Ấn Độ) 🇮🇳
  • en-NZ - Tiếng Anh (New Zealand) 🇳🇿
  • en-PH - Tiếng Anh (Philippines) 🇵🇭
  • en-PK - Tiếng Anh (Pakistan) 🇵🇰
  • en-SG - Tiếng Anh (Singapore) 🇸🇬
  • en-US - Tiếng Anh (Hoa Kỳ) 🇺🇸
  • en-ZA - Tiếng Anh (Nam Phi) 🇿🇦

Tiếng Trung 🌐

  • zh - Tiếng Trung (toàn cầu)
  • zh-CN - Tiếng Trung (Trung Quốc) 🇨🇳
  • zh-HK - Tiếng Trung (Hồng Kông) 🇭🇰
  • zh-TW - Tiếng Trung (Đài Loan) 🇹🇼

Tiếng Tây Ban Nha 🌐

  • es - Tiếng Tây Ban Nha (toàn cầu)
  • es-AR - Tiếng Tây Ban Nha (Argentina) 🇦🇷
  • es-CL - Tiếng Tây Ban Nha (Chile) 🇨🇱
  • es-CO - Tiếng Tây Ban Nha (Colombia) 🇨🇴
  • es-ES - Tiếng Tây Ban Nha (Tây Ban Nha) 🇪🇸
  • es-MX - Tiếng Tây Ban Nha (Mexico) 🇲🇽
  • es-PE - Tiếng Tây Ban Nha (Peru) 🇵🇪

Tiếng Pháp 🌐

  • fr - Tiếng Pháp (toàn cầu)
  • fr-BE - Tiếng Pháp (Bỉ) 🇧🇪
  • fr-CA - Tiếng Pháp (Canada) 🇨🇦
  • fr-CH - Tiếng Pháp (Thụy Sĩ) 🇨🇭
  • fr-FR - Tiếng Pháp (Pháp) 🇫🇷

Tiếng Đức 🌐

  • de - Tiếng Đức (toàn cầu)
  • de-AT - Tiếng Đức (Áo) 🇦🇹
  • de-BE - Tiếng Đức (Bỉ) 🇧🇪
  • de-CH - Tiếng Đức (Thụy Sĩ) 🇨🇭
  • de-DE - Tiếng Đức (Đức) 🇩🇪

Tiếng Bồ Đào Nha 🌐

  • pt - Tiếng Bồ Đào Nha (toàn cầu)
  • pt-BR - Tiếng Bồ Đào Nha (Brazil) 🇧🇷
  • pt-PT - Tiếng Bồ Đào Nha (Bồ Đào Nha) 🇵🇹

Tiếng Ý 🌐

  • it - Tiếng Ý (toàn cầu)
  • it-CH - Tiếng Ý (Thụy Sĩ) 🇨🇭
  • it-IT - Tiếng Ý (Ý) 🇮🇹

Tiếng Nhật 🌐

  • ja - Tiếng Nhật (toàn cầu)
  • ja-JP - Tiếng Nhật (Nhật Bản) 🇯🇵

Tiếng Hàn 🌐

  • ko - Tiếng Hàn (toàn cầu)
  • ko-KR - Tiếng Hàn (Hàn Quốc) 🇰🇷

Tiếng Nga 🌐

  • ru - Tiếng Nga (toàn cầu)
  • ru-RU - Tiếng Nga (Nga) 🇷🇺

Ngôn ngữ châu Âu

Tiếng Hà Lan 🌐

  • nl - Tiếng Hà Lan (toàn cầu)
  • nl-BE - Tiếng Hà Lan (Bỉ) 🇧🇪
  • nl-NL - Tiếng Hà Lan (Hà Lan) 🇳🇱

Tiếng Ba Lan 🌐

  • pl - Tiếng Ba Lan (toàn cầu)
  • pl-PL - Tiếng Ba Lan (Ba Lan) 🇵🇱

Tiếng Séc 🌐

  • cs - Tiếng Séc (toàn cầu)
  • cs-CZ - Tiếng Séc (Cộng hòa Séc) 🇨🇿

Tiếng Hungary 🌐

  • hu - Tiếng Hungary (toàn cầu)
  • hu-HU - Tiếng Hungary (Hungary) 🇭🇺

Tiếng Romania 🌐

  • ro - Tiếng Romania (toàn cầu)
  • ro-RO - Tiếng Romania (Romania) 🇷🇴

Tiếng Hy Lạp 🌐

  • el - Tiếng Hy Lạp (toàn cầu)
  • el-GR - Tiếng Hy Lạp (Hy Lạp) 🇬🇷

Tiếng Bulgaria 🌐

  • bg - Tiếng Bulgaria (toàn cầu)
  • bg-BG - Tiếng Bulgaria (Bulgaria) 🇧🇬

Tiếng Croatia 🌐

  • hr - Tiếng Croatia (toàn cầu)

Tiếng Slovak 🌐

  • sk - Tiếng Slovak (toàn cầu)

Tiếng Slovenia 🌐

  • sl - Tiếng Slovenia (toàn cầu)

Tiếng Estonia 🌐

  • et - Tiếng Estonia (toàn cầu)
  • et-EE - Tiếng Estonia (Estonia) 🇪🇪

Tiếng Latvia 🌐

  • lv - Tiếng Latvia (toàn cầu)

Tiếng Litva 🌐

  • lt - Tiếng Litva (toàn cầu)

Tiếng Phần Lan 🌐

  • fi - Tiếng Phần Lan (toàn cầu)
  • fi-FI - Tiếng Phần Lan (Phần Lan) 🇫🇮

Tiếng Thụy Điển 🌐

  • sv - Tiếng Thụy Điển (toàn cầu)
  • sv-SE - Tiếng Thụy Điển (Thụy Điển) 🇸🇪

Tiếng Na Uy 🌐

  • nb - Tiếng Na Uy Bokmål
  • nb-NO - Tiếng Na Uy Bokmål (Na Uy) 🇳🇴

Tiếng Đan Mạch 🌐

  • da - Tiếng Đan Mạch (toàn cầu)
  • da-DK - Tiếng Đan Mạch (Đan Mạch) 🇩🇰

Tiếng Iceland 🌐

  • is - Tiếng Iceland (toàn cầu)

Ngôn ngữ khác

Tiếng Ả Rập 🌐

  • ar - Tiếng Ả Rập (toàn cầu)
  • ar-SA - Tiếng Ả Rập (Ả Rập Xê Út) 🇸🇦

Tiếng Hebrew 🇮🇱

  • he - Tiếng Hebrew

Tiếng Thổ Nhĩ Kỳ 🌐

  • tr - Tiếng Thổ Nhĩ Kỳ (toàn cầu)
  • tr-TR - Tiếng Thổ Nhĩ Kỳ (Thổ Nhĩ Kỳ) 🇹🇷

Tiếng Ba Tư 🌐

  • fa - Tiếng Ba Tư

Tiếng Hindi 🌐

  • hi - Tiếng Hindi

Tiếng Urdu 🌐

  • ur - Tiếng Urdu

Tiếng Thái 🌐

  • th - Tiếng Thái (toàn cầu)
  • th-TH - Tiếng Thái (Thái Lan) 🇹🇭

Tiếng Việt 🌐

  • vi - Tiếng Việt (toàn cầu)
  • vi-VN - Tiếng Việt (Việt Nam) 🇻🇳

Tiếng Indonesia 🌐

  • id - Tiếng Indonesia (toàn cầu)
  • id-ID - Tiếng Indonesia (Indonesia) 🇮🇩

Ngôn ngữ Ấn Độ

  • kn - Tiếng Kannada 🌐
  • ml - Tiếng Malayalam 🌐
  • mr - Tiếng Marathi 🌐
  • ta - Tiếng Tamil 🌐
  • te - Tiếng Telugu 🌐

Ngôn ngữ châu Âu khác

  • af - Tiếng Afrikaans 🌐
  • be - Tiếng Belarus 🌐
  • ca - Tiếng Catalan 🌐
  • cy - Tiếng Wales 🌐
  • eu - Tiếng Basque 🌐
  • ga - Tiếng Ireland 🌐
  • gd - Tiếng Gael Scotland 🌐
  • gl - Tiếng Galicia 🌐
  • sq - Tiếng Albania 🌐
  • uk - Tiếng Ukraina 🌐

Ghi chú sử dụng

  • Mã toàn cầu (ví dụ en, zh, es) cho kết quả rộng hơn, không giới hạn quốc gia
  • Mã theo quốc gia (ví dụ en-US, zh-CN, es-MX) trả kết quả bản địa hóa theo khu vực
  • API tự chọn domain Google và cài đặt ngôn ngữ phù hợp theo locale bạn chỉ định
  • Nên khớp tham số lang với ngôn ngữ của truy vấn tìm kiếm để kết quả tốt nhất

Mục lục

Giới thiệuTính năng cốt lõiEndpoint APIVí dụ sử dụngTìm kiếm cơ bản (Google mặc định)Tìm kiếm nhiều trangTìm kiếm theo ngôn ngữ/khu vựcPhân trang tìm kiếmTìm kiếm an toàn (Safe Search)Tham số requestTùy chọn: scrape_options cho URL kết quảCông cụ tìm kiếm được hỗ trợgoogle (mặc định)Định dạng phản hồiPhản hồi thành công (HTTP 200)Tìm kiếm thành côngLoại kết quả tìm kiếmPhản hồi lỗi400 - Lỗi xác thực401 - Không được xác thực (API key)402 - Cần thanh toánThực hành tốtHướng dẫn chọn công cụ tìm kiếmTối ưu hiệu năngXử lý lỗiDùng đồng thời caoGiới hạn tốc độ và creditCâu hỏi thường gặpHỏi: Khi nào nên dùng cài đặt ngôn ngữ khác nhau?Hỏi: Vì sao một số tìm kiếm trả ít kết quả hơn dự kiến?Hỏi: Xử lý tìm kiếm cần khu vực cụ thể?Hỏi: Khác biệt giữa kết quả tìm kiếm và gợi ý?Hỏi: Có giới hạn tốc độ cho tìm kiếm đồng thời không?Hỗ trợ ngôn ngữ và khu vựcNgôn ngữ chínhTiếng Anh 🌐Tiếng Trung 🌐Tiếng Tây Ban Nha 🌐Tiếng Pháp 🌐Tiếng Đức 🌐Tiếng Bồ Đào Nha 🌐Tiếng Ý 🌐Tiếng Nhật 🌐Tiếng Hàn 🌐Tiếng Nga 🌐Ngôn ngữ châu ÂuTiếng Hà Lan 🌐Tiếng Ba Lan 🌐Tiếng Séc 🌐Tiếng Hungary 🌐Tiếng Romania 🌐Tiếng Hy Lạp 🌐Tiếng Bulgaria 🌐Tiếng Croatia 🌐Tiếng Slovak 🌐Tiếng Slovenia 🌐Tiếng Estonia 🌐Tiếng Latvia 🌐Tiếng Litva 🌐Tiếng Phần Lan 🌐Tiếng Thụy Điển 🌐Tiếng Na Uy 🌐Tiếng Đan Mạch 🌐Tiếng Iceland 🌐Ngôn ngữ khácTiếng Ả Rập 🌐Tiếng Hebrew 🇮🇱Tiếng Thổ Nhĩ Kỳ 🌐Tiếng Ba Tư 🌐Tiếng Hindi 🌐Tiếng Urdu 🌐Tiếng Thái 🌐Tiếng Việt 🌐Tiếng Indonesia 🌐Ngôn ngữ Ấn ĐộNgôn ngữ châu Âu khácGhi chú sử dụng