Trends checker: CLI Google Trends né lỗi 429

ByNgọc Trai MKT10/09/2026in GitHub Tools 0
trends-checker

trends-checker là một CLI Python chạy trên nền thư viện pytrends, khoác thêm ba lớp chống rate limit — cookie auth, exponential backoff và backend DataForSEO trả phí — rồi đổ kết quả ra bảng ASCII, JSON hoặc CSV. Nó nhắm vào người làm SEO, founder đang validate nhu cầu thị trường, và dev viết AI agent cần dữ liệu Google Trends chạy tự động. Điểm đáng chú ý nhất: repo không cố lách giới hạn của Google Trends bằng mẹo vặt, mà thừa nhận nó và đưa ra một đường vòng có trả tiền.

Thank you for reading this post, don't forget to subscribe!
Google Trends quét 10 vùng là ăn 429? Có CLI này

Lỗi 429 khi quét Google Trends 10 vùng cùng lúc

Lỗi 429 khi quét Google Trends 10 vùng cùng lúc
Lỗi 429 khi quét Google Trends 10 vùng cùng lúc

README mở đầu bằng một tình huống rất cụ thể: một script đập vào Google Trends trên 10 vùng trở lên sẽ ăn 429 gần như ngay lập tức. Vấn đề không nằm ở code của bạn, mà ở chỗ API Google Trends là loại không chính thức và bị siết rất chặt.

Ai từng thử tự viết script pytrends đều biết cảm giác đó. Chạy tay một keyword thì trơn tru, đến lúc vòng lặp qua danh sách 20 quốc gia thì request thứ tư hoặc thứ năm trả về lỗi, phần còn lại rơi vào khoảng trống. Dữ liệu đầu ra méo mó, và bạn mất cả buổi để đoán xem vùng nào thất bại hay Google đang chặn tạm thời.

trends-checker sinh ra để lấp đúng khoảng đó. Thay vì bắt bạn tự viết retry, tự nhét sleep, tự quản lý session, nó gói tất cả vào một lệnh duy nhất và cho phép cấu hình từng tham số qua cờ dòng lệnh. Cách tiếp cận này không hề mới về ý tưởng, nhưng hiếm repo nào chịu đóng gói đủ chỉn chu để dùng thay cho script tự chế.

Cookie auth, backoff và DataForSEO xếp lớp thế nào?

Cookie auth, backoff và DataForSEO xếp lớp thế nào?
Cookie auth, backoff và DataForSEO xếp lớp thế nào?

Pipeline của trends-checker đi theo một sơ đồ khá rõ trong README. Keyword được đẩy vào, qua lớp cookie auth tuỳ chọn, tới Google Trends API qua các endpoint kiểu explore và multiline, rồi bọc thêm lớp retry/backoff trước khi trả về điểm quan tâm chuẩn hoá 0-100.

Có bốn tham số điều khiển hành vi này, và chúng đáng để nhớ vì là phần khác biệt lớn nhất so với một script pytrends thuần:

  • --sleep — thời gian nghỉ giữa các request theo vùng, mặc định 1.2 giây.
  • --retries — số lần thử lại khi gặp 429, mặc định 3.
  • --backoff — cơ số backoff luỹ thừa, mặc định 1.5 giây.
  • --jitter — nhiễu ngẫu nhiên cộng thêm vào delay, mặc định 0.6 giây.

Jitter là chi tiết nhỏ nhưng đáng giá. Nếu mọi request đều cách nhau đúng 1.2 giây, mẫu truy cập trông rất máy móc và dễ bị nhận diện hơn. Thêm nhiễu ngẫu nhiên làm pattern bớt đều đặn, dù README không hứa hẹn đây là biện pháp chống phát hiện hoàn hảo.

Điểm đáng nói thứ hai là cookie auth. Thay vì gửi request nguội với session trắng, bạn có thể nạp cookie từ trình duyệt đã đăng nhập Google để tránh cú 429 lúc khởi động. Cách này miễn phí nhưng có tuổi thọ — cookie hết hạn thì phải lấy lại thủ công. README không nêu thời gian sống cụ thể của cookie.

Cuối cùng là nhánh rẽ sang DataForSEO. Khi Google Trends trả 429, thay vì retry mãi, bạn có thể đổi hẳn backend sang dịch vụ trả phí. Đây là điểm khác biệt lớn về triết lý: một bên là chống chịu, một bên là mua đường khác. README nói DataForSEO cho lượng tìm kiếm thật, không chỉ chỉ số tương đối 0-100.

Tiêu chí Google Trends qua pytrends Backend DataForSEO
Chi phí Miễn phí Khoảng 0.075 USD mỗi request (theo README)
Rate limit Có, dễ dính 429 khi quét nhiều vùng README ghi không giới hạn tốc độ
Loại dữ liệu Điểm quan tâm tương đối 0-100 Lượng tìm kiếm thật
Cần cookie trình duyệt Có, để tránh 429 lúc khởi động nguội Không, dùng cặp user:password
Phù hợp cron job Có nhưng phải tinh chỉnh sleep/backoff Có, README gọi là lựa chọn khuyến nghị
Cách nạp thông tin xác thực Cờ hoặc biến môi trường TRENDS_COOKIE Cờ hoặc biến môi trường DATAFORSEO_KEY

Chạy Trends checker lần đầu trong 3 phút

Chạy trends-checker lần đầu trong 3 phút
Chạy trends-checker lần đầu trong 3 phút

Cài đặt rất gọn: một lệnh pip là xong, không cần build gì thêm. README cũng có đường cài từ mã nguồn qua git clone và make install nếu bạn muốn tự kiểm tra code trước.

  1. pip install trends-checker
  2. trends-checker --keywords 'AI agents,vibe coding' --geo US
  3. Nếu muốn thử nhánh trả phí: trends-checker --keywords 'AI agents,vibe coding' --dataforseo-key [email protected]:password

Lưu ý hai chỗ dễ vấp ngay từ lệnh đầu. Thứ nhất, tham số --keywords nhận tối đa 5 từ khoá phân tách bằng dấu phẩy — vượt quá thì README không nói rõ điều gì xảy ra. Thứ hai, khoá DataForSEO có định dạng cặp email và mật khẩu ngăn bằng dấu hai chấm, không phải token rời.

Về đầu ra, có ba lựa chọn. Mặc định là bảng ASCII với thanh unicode. --format json cho đầu ra thân thiện với pipe và script. --format csv --output results.csv ghi thẳng ra file để tích luỹ dữ liệu lịch sử. Cờ --no-color tắt thanh unicode, an toàn cho cron job và log file — đây là chi tiết nhỏ mà nhiều CLI bỏ quên.

Cookie file hay DataForSEO key — chỗ nào hay sai?

Cookie file hay DataForSEO key — chỗ nào hay sai?
Cookie file hay DataForSEO key — chỗ nào hay sai?

Phần lớn lỗi khi dùng trends-checker đến từ hai cấu hình: cookie và thông tin xác thực DataForSEO. README cho hai đường nạp cookie, qua cờ --cookie-file hoặc biến môi trường TRENDS_COOKIE, và cả hai đều dễ sai định dạng.

Với DataForSEO, chi phí khoảng 0.075 USD mỗi request theo README. Con số đó nghe nhỏ, nhưng nhân lên sẽ đáng kể. Ví dụ, một lần quét 5 keyword trên 10 vùng có thể là 50 request, tức khoảng 3.75 USD cho một lần chạy. Watch mode chạy mỗi 6 giờ thì chi phí tháng sẽ leo thang nhanh. README không nêu cơ chế chống trùng lặp hay cache kết quả, nên bạn cần tự tính trước khi bật lịch chạy dày.

Triệu chứng Nguyên nhân thường gặp Cách xử lý theo README
Vẫn ăn 429 dù đã có cookie Cookie hết hạn hoặc thiếu trường NID Lấy lại cookie mới từ Chrome DevTools, nạp qua --cookie-file
Lệnh báo lỗi xác thực DataForSEO Nhập sai định dạng, thiếu dấu hai chấm giữa user và password Dùng đúng dạng [email protected]:password qua cờ hoặc biến môi trường
Thanh unicode vỡ trong log CI Thiếu cờ tắt màu Thêm --no-color
Chạy nhiều vùng quá chậm Sleep và backoff mặc định khá thận trọng Giảm --sleep, nhưng đánh đổi bằng rủi ro 429 cao hơn

Một chỗ nữa dễ gây hiểu lầm: tham số --geo nhận mã quốc gia ISO hoặc WW, và danh sách mặc định README liệt kê là WW, US, BR, ES, IN, ID, RU. README nhắc tới khả năng phân tích hơn 50 quốc gia trong một lần chạy, nhưng không liệt kê đầy đủ danh sách mã hợp lệ, cũng không nói rõ mã sai thì báo lỗi hay bỏ qua im lặng.

Trendly, rankmyTube hay trends-checker cho YouTube?

Trendly, rankmyTube hay trends-checker cho YouTube?
Trendly, rankmyTube hay trends-checker cho YouTube?

Khi tìm kiếm về công cụ kiểm tra xu hướng, kết quả Google trả về chủ yếu là các sản phẩm giao diện web như Trendly, YouTube Trend Checker, rankmyTube hay Trend Checker — những cái tên trends-checker hoàn toàn không nhắc tới trong README.

Khác biệt cốt lõi nằm ở hình thái sản phẩm. Trendly và rankmyTube là công cụ web, bạn mở trình duyệt, gõ từ khoá, xem biểu đồ. trends-checker là CLI: bạn gọi từ terminal, nhận JSON hoặc CSV, nhét thẳng vào pipeline. Nếu nhu cầu là tra cứu vài lần một tuần, công cụ web tiện hơn hẳn. Nếu nhu cầu là chạy tự động hàng đêm và ghi dữ liệu lịch sử, CLI mới là lựa chọn đúng.

Điểm chung của nhóm công cụ web là chúng trừu tượng hoá phần khó — rate limit, xác thực, retry — và bán cho bạn kết quả. trends-checker đi theo hướng ngược lại: đưa cho bạn các tham số thô để tự vặn. Đánh đổi là bạn phải hiểu sleep, backoff, jitter và chấp nhận rằng mình vẫn có thể bị chặn. Không có bữa trưa miễn phí ở đây.

Về khía cạnh YouTube, trends-checker có nhóm --group youtube để lấy tín hiệu tìm kiếm trên YouTube thay vì tìm kiếm web. Đây là tín hiệu về từ khoá người ta gõ vào YouTube — khác với việc thống kê danh sách video đang trending theo quốc gia, vốn là thứ các công cụ như YouTube Trend Checker nhắm vào. Hai loại dữ liệu khác nhau, đừng đánh đồng.

trends-checker bỏ qua những gì?

trends-checker bỏ qua những gì?
trends-checker bỏ qua những gì?

Đây là công cụ hẹp, và biết nó không làm gì quan trọng không kém biết nó làm gì. README mô tả phạm vi khá rõ, và có vài khoảng trống bạn cần chấp nhận trước khi cài.

  • Không phải API chính thức. Nó chạy trên Google Trends API không chính thức qua pytrends, nghĩa là Google có thể đổi hành vi bất cứ lúc nào và làm hỏng công cụ.
  • Không đảm bảo vượt 429. Cookie và backoff chỉ giảm xác suất, không loại bỏ hoàn toàn. Ngay cả DataForSEO cũng chỉ là đổi nhà cung cấp, không phải bảo hiểm.
  • Không phải nền tảng trực quan hoá. Đầu ra là bảng ASCII, JSON hoặc CSV — không dashboard, không biểu đồ tương tác.
  • Không nêu giấy phép trong README. Đây là điểm mù thật sự nếu bạn định dùng cho mục đích thương mại hoặc nhúng vào sản phẩm bán lại. Cần kiểm tra trực tiếp trong repo.
  • Không nêu nhịp bảo trì hay số người đóng góp. README chỉ có lời kêu gọi mở issue và PR, không có lộ trình hay ngày phát hành.

Có một chi tiết đáng tách ra: cuối README, tác giả giới thiệu TrendProof, một API riêng định vị là lớp đo tốc độ tăng trưởng theo thời gian thực, kèm gợi ý hành động kiểu publish now before peak. trends-checker và TrendProof là hai sản phẩm khác nhau. Đừng nhầm rằng cài trends-checker là có luôn tính năng đó.

trends-checker và dữ liệu tiếng Việt, geo VN

trends-checker và dữ liệu tiếng Việt, geo VN
trends-checker và dữ liệu tiếng Việt, geo VN

Về khả năng chạy cho bối cảnh Việt Nam, README có nhắc tham số --hl để đặt ngôn ngữ giao diện, ví dụ en-US. Đây là ngôn ngữ của giao diện Google Trends, không phải ngôn ngữ của từ khoá. Bạn vẫn có thể truyền từ khoá tiếng Việt vào --keywords bình thường.

Điều README không nêu: mã geo cho Việt Nam có nằm trong nhóm hơn 50 quốc gia được hỗ trợ hay không, và nếu có thì dữ liệu cho thị trường nhỏ như Việt Nam thường thưa thế nào. Đây là câu hỏi cần tự kiểm chứng bằng máy thật thay vì tin vào suy đoán.

Hai vấn đề hạ tầng liên quan trực tiếp. Thứ nhất, DataForSEO là dịch vụ quốc tế tính phí theo request — bạn cần thẻ thanh toán quốc tế và chấp nhận quy đổi tiền tệ. Thứ hai, chạy trên VPS Việt Nam rồi gọi Google Trends liên tục có thể cho kết quả khác so với IP dân dụng, dù README không đề cập biến số này. Cờ --proxy nhận danh sách proxy HTTP/HTTPS phân tách bằng dấu phẩy là công cụ duy nhất README cung cấp cho tình huống đó.

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

trends-checker có cần trả tiền để dùng không?

Không bắt buộc. Đường miễn phí dùng Google Trends qua pytrends kèm cookie auth. Đường trả phí dùng DataForSEO với giá tham khảo khoảng 0.075 USD mỗi request theo README. Bạn chỉ trả tiền khi chọn backend đó.

Cookie lấy từ đâu và dùng thế nào?

README hướng dẫn lấy từ Chrome DevTools, mục Network, khi đang mở trends.google.com. Sau đó nạp qua file bằng cờ --cookie-file hoặc qua biến môi trường TRENDS_COOKIE. README không nêu cookie sống được bao lâu.

trends-checker chạy được tối đa bao nhiêu keyword?

README ghi tối đa 5 từ khoá mỗi lần chạy qua tham số --keywords, phân tách bằng dấu phẩy. Nếu cần nhiều hơn, có tham số --keywords-file nhận file mỗi dòng một từ khoá, nhưng README không nói rõ giới hạn của đường này.

Watch mode có gửi thông báo qua email hay Slack không?

README chỉ nêu watch mode ghi sự kiện ra file JSON qua --watch-output và lưu baseline qua --watch-snapshot. Không có tích hợp thông báo sẵn. Muốn cảnh báo tự động, bạn phải tự đọc file JSON rồi nối sang kênh khác.

Có cần GPU hay máy cấu hình cao không?

Không. Đây là CLI gọi API từ xa, không chạy mô hình tại chỗ. README không nêu yêu cầu phần cứng tối thiểu, nhưng bản chất công việc là gửi request và chờ phản hồi, nên máy yếu vẫn chạy được.

Khi nào nên gõ pip install trends-checker

Nên cài nếu bạn đang viết pipeline cần dữ liệu Google Trends chạy tự động, đã từng vật lộn với 429 khi tự viết script pytrends, và chấp nhận trả tiền cho DataForSEO khi cần độ ổn định. Đầu ra JSON và CSV là điểm cộng lớn cho ai ghép vào hệ thống sẵn có.

Nên bỏ qua nếu bạn chỉ tra cứu vài lần một tháng — mở trình duyệt dùng Trendly hay rankmyTube nhanh hơn nhiều. Cũng nên cân nhắc kỹ nếu bạn cần giấy phép rõ ràng cho mục đích thương mại, vì README không nêu thông tin này. Và nếu bạn cần dữ liệu có SLA, hãy nhớ rằng lớp miễn phí vẫn dựa trên một API mà Google không hứa hẹn gì.

Điều đáng ghi nhận là tác giả không thổi phồng. README nói thẳng Google Trends API là không chính thức và bị siết, thay vì hứa hẹn giải pháp hoàn hảo. Với một công cụ sống nhờ API của người khác, sự trung thực đó có giá trị hơn vài dòng marketing.

Nguồn tham khảo

Related Posts