Tài liệu API V2

API v2

Connect your system to our services with a simple POST API.

Base URLhttps://likevietnam.net/api/v2
MethodPOST · x-www-form-urlencoded
API Key Please login to get API Key
POST Quickstart

All endpoints share one base URL and use POST with form parameters. Authenticate with your API key in every request.

  1. Base URL — https://likevietnam.net/api/v2
  2. Authentication — send parameter key (bound to this domain).
  3. Action — action chooses the operation (e.g. earn_balance, add, status).
Example request — cURL
curl -X POST "https://likevietnam.net/api/v2" \
  -d "key=YOUR_API_KEY" \
  -d "action=earn_balance"
Example response
{
  "status": "success",
  "data": { "balance_earn": 250000, "currency": "VND" }
}
Errors: {"error":"..."} hoặc {"status":"error","message":"..."}. Common: API KEY INVALID, Insufficient balance.
Parameters Description
key API Key
action "services"
extra Không bắt buộc. Gửi extra=1 để nhận thêm mô tả, trạng thái ổn định và tên gốc của dịch vụ.

Trường name trả về đúng tên tiếng Việt đang hiển thị trên web; dịch vụ nào chưa có tên tiếng Việt thì trả tên mặc định.

Example response
[
      {
        "service": 1,
        "name": "Tăng Lượt Xem Facebook",
        "type": "Default",
        "category": "Facebook",
        "rate": "2.5",
        "min": "200",
        "max": "10000",
        "refill": true,
        "cancel": false
      }, {
        "service": 3,
        "name": "Tăng mắt livestream Tiktok Việt Nam",
        "type": "LiveStream",
        "minutes": [15, 30, 60, 90, 120],
        "category": "Tăng mắt livestream",
        "rate": "0.1245",
        "min": "10",
        "max": "5000",
        "refill": false,
        "cancel": false
      }, {
        "service": 2,
        "name": "Tăng View Tiktok",
        "type": "Default",
        "category": "Tiktok",
        "rate": "4",
        "min": "10",
        "max": "1500",
        "refill": false,
        "cancel": true
      }
    ]
Trường Description
không bắt buộcminutes Only present on LiveStream services that have preset minute tiers. It lists the minute values accepted by the minute parameter of action=add. Sending fewer minutes than the lowest tier returns an error; any other value is rounded DOWN to the nearest tier (above the highest tier it becomes the highest tier). You are charged for the rounded value.
Example response (extra=1)
[
      {
        "service": 2,
        "name": "Tăng View Tiktok",
        "type": "Default",
        "category": "Tăng Lượt Xem Tiktok",
        "rate": "4",
        "min": "10",
        "max": "1500",
        "refill": false,
        "cancel": true,

        "name_default": "TikTok Views Max: 500M 10M/ Ngày",
        "description": "Tăng lượt xem video TikTok nhanh chóng, số lượng lớn.",
        "status": "stable",
        "status_text": "Ổn định",
        "stable": true,
        "platform": "Tiktok"
      }
    ]
Trường (extra=1) Description
name_default Tên gốc của dịch vụ (trước khi dịch sang tiếng Việt).
description Mô tả dịch vụ, đã bỏ thẻ HTML.
status stable, beta, slow, many_errors, die
status_text Ổn định / Thử nghiệm / Chậm / Nhiều lỗi / Ngừng hoạt động
stable true chỉ khi trạng thái là stable
platform Facebook, Tiktok, Youtube, Instagram…
Parameters Description
key API Key
action "add"
service Service ID
link Url
quantity Needed quantity
minute Needed minute — use one of the tiers listed in the minutes field of action=services. Any other value is rounded DOWN to the nearest tier; below the lowest tier the order is rejected.
reaction Include: "like", "love", "haha", "wow", "sad", "angry"
Example response
{
      "order": 99999
    }
Parameters Description
key API Key
action "status"
order Order ID
Example response
{
      "charge": "2.5",
      "start_count": "168",
      "status": "Completed",
      "remains": "-2"
    }

Status: Pending, Processing, In progress, Completed, Partial, Canceled

Parameters Description
key API Key
action "status"
orders Order IDs separated by comma (E.g: 123,456,789) (Limit 100)
Example response
{
      "123": {
        "charge": "0.27819",
        "start_count": "3572",
        "status": "Partial",
        "remains": "157"
      },
      "456": {
        "error": "Incorrect order ID"
      },
      "789": {
        "charge": "1.44219",
        "start_count": "234",
        "status": "In progress",
        "remains": "10"
      }
    }
Parameters Description
key API Key
action "balance"
Example response
{
      "balance": "343.22",
      "currency": "USD"
    }
Parameters Description
key API Key
action "refill"
order Order ID
Example response
{
      "refill": "1"
    }
Parameters Description
key API Key
action "refill"
orders Order IDs separated by comma (E.g: 123,456,789) (Limit 100)
Example response
[
      {
        "order": 1,
        "refill": 1
      },
      {
        "order": 2,
        "refill": 2
      },
      {
        "order": 3,
        "refill": {
          "error": "Incorrect order ID"
        }
      }
    ]
Parameters Description
key API Key
action "refill_status"
refill Refill ID
Example response
{
      "status": "Completed"
    }
Parameters Description
key API Key
action "refill_status"
refills Refill IDs separated by comma (E.g: 123,456,789) (Limit 100)
Example response
[
      {
        "refill": 1,
        "status": "Completed"
      }, {
        "refill": 2,
        "status": "Rejected"
      }, {
        "refill": 3,
        "status": {
          "error": "Incorrect refill ID"
        }
      }
    ]
Parameters Description
key API Key
action "cancel"
orders Order IDs separated by comma (E.g: 123,456,789) (Limit 100)
Example response
[
      {
        "order": 123,
        "cancel": {
          "error": "Incorrect order ID"
        }
      },
      {
        "order": 456,
        "cancel": 1
      }
    ]
Read-only — lấy bảng giá proxy & báo giá theo loại / số lượng / số ngày TRƯỚC khi mua. Không tạo đơn, không trừ tiền.
Parameters Description
key API Key
action "proxy_prices"
type Optional — Proxy type: FPT, VNPT, Viettel, 4Gvinaphone, DatacenterA, DatacenterB, DatacenterC, US, V6, GoiViettel, GoiVNPT, GoiFPT, GoiDATACENTER, xoayngay, xoaytuan, xoaythang. Leave empty to get the full price list only.
quantity Optional — Quantity (default 1)
days Optional — Number of days (default 1)
Cách tính giá: mỗi prices[price_key] có KEY chính là ngưỡng bậc — chọn ngưỡng lớn nhất ≤ cơ sở (cơ sở = days, riêng V6 = quantity; xoay* giá phẳng).
total = unit_price × quantity × days — đúng bằng số tiền buy_proxy sẽ trừ. Giá đã áp % theo cấp bậc của API key.
Example response
{
      "status": "success",
      "level": "member",
      "currency": "VND",
      "note": "unit_price = giá 1 proxy / 1 ngày. total = unit_price * quantity * days.",
      "type_map": {
        "FPT": { "price_key": "VN", "tier_by": "days" },
        "US":  { "price_key": "US", "tier_by": "days" },
        "V6":  { "price_key": "V6", "tier_by": "quantity" }
      },
      "prices": {
        "VN": { "1": 5000, "5": 4500, "10": 4000, "20": 3500, "30": 3000, "45": 2800, "60": 2600, "90": 2400, "120": 2200 },
        "US": { "1": 3000, "5": 2700, "10": 2500, "20": 2300, "30": 2000 },
        "V6": { "1": 500, "100": 450, "500": 400, "1000": 350, "2000": 300 },
        "xoayngay": 20000
      },
      "quote": {
        "type": "FPT",
        "quantity": 10,
        "days": 30,
        "unit_price": 3000,
        "price_per_proxy": 90000,
        "total": 900000,
        "balance": 5000000,
        "enough_balance": true
      }
    }
Parameters Description
key API Key
action "buy_proxy"
proxy v4static v6static v4rotate
type
quantity Needed quantity
days Min 1 Min 30
protocol "HTTP" or "SOCKS5"
user Optional - Custom username for proxy authentication
password Optional - Custom password for proxy authentication
Example response
{
      "status": "success",
      "data": [
        {
          "id": 279,
          "proxy_type": "Proxy v4 static",
          "protocol": "HTTPS",
          "data": "206.125.175.230:13271:bUMBYc:YbhrHU",
          "data2": "114.256.712.19:13271:bUMBYc:YbhrHU",
          "status": "success",
          "expired_at": "18-05-2025 22:14:17"
        },
        {
          "id": 280,
          "proxy_type": "Proxy v4 static",
          "protocol": "HTTPS",
          "data": "14.224.198.65:20693:user20694:AXYAE",
          "data2": "114.256.712.19:14221:user20694:AXYAE",
          "status": "success",
          "expired_at": "18-05-2025 22:14:17"
        }
      ],
      "payment": 1152,
      "balance": 965567
    }
Parameters Description
key API Key
action "get_proxy"
proxy_id Example: 37775
Example response
{
      "status": "success",
      "order": {
        "proxy_id": 37775,
        "proxy_type": "Proxy v4 static",
        "protocol": "HTTPS",
        "data": "172.111.171.99:14288:10md12:123456",
        "data2": "114.122.09.99:11218:10md12:123456",
        "status": "success",
        "expired_at": "18-05-2025 22:14:17"
      }
    }
Parameters Description
key API Key
action "get_rotate_proxy"
key_rotate Key proxy rotate
operator
location
Example response
{
      "status": "success",
      "message": "Proxy này sẽ die sau 1021s",
      "data": {
        "key_rotate": "KFBlsUezBtRMKTmiHdlhHY",
        "http": "42.114.164.224:20841:khljtiNj3Kd:fdkm3nbjg45d",
        "socks5": "42.114.164.224:30841:khljtiNj3Kd:fdkm3nbjg45d",
        "operator": "viettel",
        "location": "HaiDuong1",
        "expired_at": "18-05-2025 22:14:17"
      }
    }

Lấy danh sách phần mềm đang bán, các gói và giá đúng của website bạn (đã cộng phần trăm từng cấp). Gọi trước khi hiển thị bảng giá cho khách của bạn.

Parameters Description
key API Key
action "software_products"
Example response
{
      "status": "success",
      "data": [
        {
          "slug": "antidetect-browser",
          "name": "XProfile Browser Pro",
          "version": "1.0.10",
          "plans": [
            { "key": "trial",    "name": "Dùng thử 7 ngày", "days": 7,    "price": 0 },
            { "key": "monthly",  "name": "1 tháng",         "days": 30,   "price": 130000 },
            { "key": "yearly",   "name": "1 năm",           "days": 365,  "price": 650000 },
            { "key": "lifetime", "name": "Vĩnh viễn",       "days": null, "price": 1300000 }
          ]
        }
      ]
    }

Mua một giấy phép. Tiền trừ vào ví của tài khoản gọi API. Trả về license_key — giao thẳng cho khách của bạn, khách dán vào mục “Đổi giấy phép” trong phần mềm là dùng được.

Parameters Description
key API Key
action "buy_software"
slug Mã phần mềm, lấy ở software_products. Ví dụ antidetect-browser
plan Mã gói: trial / monthly / yearly / lifetime. Bỏ trống = lifetime
Example response
{
      "status": "success",
      "message": "Mua thành công! License đã được cấp.",
      "license_key": "PX-E09B-C5C9-7CEF-9208",
      "download_url": "https://socialcare.vn/software/antidetect-browser/download"
    }
Lưu ý
  • Gói trial chỉ cấp một lần cho mỗi tài khoản trên mỗi phần mềm. Gọi lần hai trả lỗi.
  • Không đủ số dư thì trả lỗi và không cấp giấy phép — không có trạng thái nợ.
  • Mỗi giấy phép gắn vào một máy ở lần kích hoạt đầu. Bán cho hai khách là người thứ hai không kích hoạt được.

Liệt kê giấy phép tài khoản bạn đã mua. Dùng để đối soát hoặc lấy lại mã đã cấp cho khách. Tối đa 500 bản ghi, mới nhất trước.

Parameters Description
key API Key
action "software_licenses"
slug Không bắt buộc — lọc theo một phần mềm
status Không bắt buộc — lọc theo trạng thái, ví dụ active
Example response
{
      "status": "success",
      "data": [
        {
          "license_key": "PX-5DAC-4E20-0189-0E66",
          "product": "antidetect-browser",
          "plan": "yearly",
          "status": "active",
          "machine_code": null,
          "issued_at": "2026-08-24 18:50:40",
          "expires_at": "2027-08-24 18:50:40"
        }
      ]
    }

machine_code rỗng nghĩa là chưa ai kích hoạt — mã còn nguyên, giao cho khách được. expires_at rỗng là gói vĩnh viễn.

Parameters Description
key API Key
action "get_all_proxy"
Example response
{
      "status": "success",
      "order": [
        {
          "id": 251,
          "proxy_type": "Proxy v4 static",
          "protocol": "HTTP",
          "operator": "FPT",
          "day": 89,
          "data": "206.125.175.230:13271:bUMBYc:YbhrHU",
          "data2": "114.256.712.19:13271:bUMBYc:YbhrHU",
          "status": "success",
          "expired_at": "18-05-2025 22:14:17"
          "auto_renew": 0
        },
        {
          "id": 252,
          "proxy_type": "Proxy v4 static",
          "protocol": "HTTP",
          "operator": "FPT",
          "day": 89,
          "data": "14.224.198.65:20693:user20694:AXYAE",
          "data2": "",
          "status": "success",
          "expired_at": "18-05-2025 22:14:17"
          "auto_renew": 0
        },
        {
          "id": 253,
          "proxy_type": "Proxy v4 static",
          "protocol": "HTTP",
          "operator": "FPT",
          "day": 89,
          "data": "172.111.171.99:14288:10md12:123456",
          "data2": "114.122.09.99:11218:10md12:123456",
          "status": "success",
          "expired_at": "18-05-2025 22:14:17"
          "auto_renew": 0
        }
      ]
    }
Parameters Description
key API Key
action "renew_proxy"
proxy_id Proxy ID(s). Single: 37775 or Multiple: 123,456,789
days Number of days (required)
Example response
{
  "status": "success",
  "data": [
    {
      "proxy_id": 37775,
      "proxy_type": "Proxy v4 static",
      "protocol": "SOCKS5",
      "operator": "FPT",
      "data": "172.111.171.99:14288:newuser:newpass",
      "data2": "114.122.09.99:11218:newuser:newpass",
      "status": "success",
      "expired_at": "18-05-2025 22:14:17"
    }
  ],
  "totalPrice": 5000
}
Parameters Description
key API Key
action "download_package"
proxy_id Example: 37775
mode 1 = source proxy, 2 = forward proxy
Example response
{
  "status": "success",
  "type": "HTTP",
  "count": 3,
  "list": [
    "1.1.1.1:1010:user:pass",
    "2.2.2.2:2020:user:pass",
    "3.3.3.3:3030:user:pass"
  ]
}
Parameters Description
key API Key
action "change_auth_proxy"
proxy_id Proxy ID(s). Single: 251 or Multiple: 251,252,253
protocol "HTTP" or "SOCKS5" (optional, default: keep current)
user New username (optional, default: "random")
password New password (optional, default: "random")
Example response
{
  "status": "success",
  "data": [
    {
      "proxy_id": 251,
      "proxy_type": "Proxy v4 static",
      "protocol": "SOCKS5",
      "operator": "FPT",
      "data": "172.111.171.99:14288:newuser:newpass",
      "data2": "114.122.09.99:11218:newuser:newpass",
      "status": "success",
      "expired_at": "18-05-2025 22:14:17"
    }
  ]
}
Parameters Description
key API Key
action "change_proxy"
proxy_id Proxy ID(s). Single: 251 or Multiple: 251,252,253
loaiproxy
protocol "HTTP" or "SOCKS5" (optional, default: keep current)
user New username (optional, default: "random")
password New password (optional, default: "random")
Example response
{
  "status": "success",
  "data": [
    {
      "proxy_id": 251,
      "proxy_type": "Proxy v4 static",
      "protocol": "HTTP",
      "operator": "VNPT",
      "data": "42.115.123.45:12345:user123:pass456",
      "data2": "103.82.45.67:12345:user123:pass456",
      "status": "success",
      "expired_at": "18-05-2025 22:14:17"
    }
  ]
}
Parameters Description
key API Key
action "traffic_packages"
Example response
{
      "status": "success",
      "data": [
        {
          "id": 1,
          "name": "Package 1",
          "price": 1000,
          "min": 100,
          "max": 10000,
          "time": 60,
          "type": "default",
          "che_do_xac_minh": "ma",
          "step": 1
        }
      ]
    }
Lọc theo che_do_xac_minh để biết gói cần tham số gì: "ma" = gắn mã theo dõi vào web · "sdt" = không gắn mã, khai mã cố định · "faq" = không gắn mã, câu hỏi tự sinh · "map" = địa điểm Google Maps, không cần website. Mỗi loại có mục riêng ở cột trái.
Parameters Description
key API Key
action "traffic_widget"
domain Không bắt buộc. Tên miền của chính bạn để phục vụ snippet (giấu nguồn). Xem lưu ý bên dưới.

Returns the tracking snippet to paste before the closing body tag on every landing page of your campaign. The code belongs to your account, so one snippet works for all campaigns.

Example response
{
      "status": "success",
      "data": {
        "ref_code": "obEisMjUMf",
        "widget_url": "https://socialcare.vn/widget/service.js?key=obEisMjUMf",
        "snippet": "<script src=\"https://socialcare.vn/widget/service.js?key=obEisMjUMf\" data-no-optimize=\"1\" data-cfasync=\"false\"></script>"
      }
    }
Parameters Description
keyAPI Key
action"traffic_subcode_create"
labelKhông bắt buộc. Nhãn bạn tự đặt cho khách này, để phân biệt các mã.
websiteKhông bắt buộc. Website sẽ gắn mã này (chỉ để ghi chú).
domainKhông bắt buộc. Tên miền của chính bạn để phục vụ snippet (giấu nguồn).

Tạo một mã tracking riêng cho một khách của bạn. Mọi mã vẫn thuộc tài khoản của bạn; lượt truy cập được quy về chiến dịch theo TÊN MIỀN website, nên mỗi khách chỉ cần mã riêng chứ không cần chiến dịch riêng. Giới hạn: 500 mã đang hoạt động.

Example response
{
      "status": "success",
      "data": {
        "id": 12,
        "label": "Client A",
        "website": "https://clienta.com",
        "ref_code": "ehnUxcrhuR2L",
        "widget_url": "https://track.your-domain.com/widget/service.js?key=ehnUxcrhuR2L",
        "snippet": "<script src=\"https://track.your-domain.com/widget/service.js?key=ehnUxcrhuR2L\" data-no-optimize=\"1\" data-cfasync=\"false\"></script>",
        "chuyen_tiep": {
          "ghi_chu": "...",
          "nginx": "...",
          "cloudflare_worker": "..."
        }
      }
    }
Giấu nguồn: lưu ý quan trọng
Nếu bạn truyền "domain", tên miền của bạn phải chuyển tiếp CẢ HAI đường — /widget/service.js và /widget.js — và phải GIỮ NGUYÊN header Origin. Chúng tôi dựa vào Origin để biết lượt truy cập đến từ website nào; nuốt mất Origin là không quy được về chiến dịch nào cả. Cấu hình nginx và Cloudflare Worker có sẵn trong phần trả về.
Parameters Description
keyAPI Key
action"traffic_subcode_list"
Example response
{
      "status": "success",
      "data": [
        {
          "id": 12,
          "code": "ehnUxcrhuR2L",
          "label": "Client A",
          "website": "https://clienta.com",
          "status": "active",
          "last_used_at": "2026-08-09 17:20:11"
        }
      ]
    }

last_used_at là lần cuối có lượt truy cập dùng mã này — dùng để phát hiện mã đã bị khách gỡ khỏi web.

Parameters Description
keyAPI Key
action"traffic_subcode_delete"
bắt buộcidID của mã con (lấy từ Sub Code · List)

Tắt mã thay vì xoá dòng, để lượt truy cập cũ vẫn tra lại được. Khi đã tắt, snippet trên web khách sẽ không còn được tính.

Example response
{
      "status": "success",
      "message": "Đã tắt mã ehnUxcrhuR2L"
    }
Parameters Description
key API Key
action "traffic_create"
name bắt buộcCampaign Name
traffic_key bắt buộcTraffic Key
package_id bắt buộcPackage ID — chọn gói có che_do_xac_minh = "sdt" nếu website của bạn không gắn được mã theo dõi. Loại đó cần thêm vài tham số riêng, xem mục Traffic không gắn mã.
Gói che_do_xac_minh = "map" là traffic cho địa điểm Google Maps — không cần website. Tham số riêng ở mục Traffic Google Maps.
url bắt buộc Website URL — nên truyền TÊN MIỀN (vd https://tenmien.com). Chiến dịch phủ cả website, còn URL từng trang khai ở từng từ khoá qua traffic_add_key.
Gói Google Maps thì BỎ TRỐNG — hệ thống tự dựng địa chỉ từ chính địa điểm bạn chọn. Gửi lên cũng bị ghi đè.
quantity bắt buộcQuantity
image không bắt buộc Image URL. Bỏ trống thì hệ thống tự dựng ảnh thẻ kết quả Google của trang đích, khách không phải tự lo ảnh nữa.
zone_1 bắt buộc% Quantity (00:00 - 05:59)
zone_2 bắt buộc% Quantity (06:00 - 11:59)
zone_3 bắt buộc% Quantity (12:00 - 17:59)
keywords không bắt buộc Nhập từ khoá NGAY trong lệnh tạo chiến dịch — khỏi phải gọi thêm traffic_add_key cho từng từ khoá. Nhận mảng hoặc chuỗi JSON. Mỗi phần tử: keyword (bắt buộc), budget (bắt buộc, ≥ 1), url_step2 và image (không bắt buộc).
Áp đúng các chốt như traffic_add_key: tổng budget không vượt quantity, không trùng từ khoá, không vượt trần số từ khoá/chiến dịch, và url_step2 phải cùng tên miền với url chiến dịch.
Từ khoá nào sai chỉ bị bỏ qua và báo lý do — chiến dịch vẫn được tạo, gọi traffic_add_key bù phần thiếu.
Example request (kèm từ khoá)
{
      "key": "API_KEY",
      "action": "traffic_create",
      "name": "Chiến dịch demo",
      "traffic_key": "abc123",
      "package_id": 1,
      "url": "https://tenmien.com",
      "quantity": 100,
      "image": "https://tenmien.com/anh.jpg",
      "zone_1": 25, "zone_2": 25, "zone_3": 25, "zone_4": 25,
      "keywords": [
        { "keyword": "từ khoá 1", "budget": 20 },
        { "keyword": "từ khoá 2", "budget": 30, "url_step2": "https://tenmien.com/bai-viet" }
      ]
    }
Example response
{
      "status": "success",
      "message": "Success",
      "data": {
        "campaign_id": 123,
        "balance": 99000,
        "campaign": {...},
        "keywords": {
          "da_nhan": 2,
          "tu_choi": 1,
          "chi_tiet": [
            { "id": 1195, "keyword": "từ khoá 1", "budget": 20 }
          ],
          "loi": [
            { "dong": 2, "keyword": "từ khoá 3", "ly_do": "Vượt số lượng đã mua (còn 50)" }
          ]
        }
      }
    }
Chiến dịch tạo xong mà chưa chạy? Hệ thống chỉ giao nhiệm vụ cho từ khoá đã có ảnh minh hoạ trang đích, mà ảnh này được dựng nền nên mất một lúc. Muốn chạy ngay thì truyền image cho chiến dịch — từ khoá chưa có ảnh riêng sẽ dùng ảnh chiến dịch. Chắc hơn nữa thì truyền image cho từng từ khoá.
Tương thích ngược: keywords là tuỳ chọn. Không truyền thì lệnh chạy y như trước và traffic_add_key vẫn dùng bình thường.
Loại này khác gì loại thường: website của bạn không phải gắn mã theo dõi. Có hai gói, khác nhau ở cách xác minh và luật lặp lại — chọn đúng gói mới ra đúng thứ bạn cần.

Hai gói khác nhau ở đâu

Tiêu chí Gói unique user Gói kết hợp
Xác minh bằng Mã cố định bạn tự khai Câu hỏi hệ thống tự sinh từ nội dung trang, mỗi lượt một câu khác
Lặp lại Mỗi người 1 lượt duy nhất cho mỗi tên miền, trọn đời Lặp lại được sau 24 giờ, như traffic nhiệm vụ thường
Tốc độ giao Chậm — phụ thuộc số người mới vào hệ thống mỗi ngày Nhanh hơn hẳn
Bạn phải chuẩn bị ma_xac_minh và 2 ảnh Chỉ anh_serp — phần câu hỏi hệ thống tự lo
Điều kiện trang đích Có một đoạn chữ cố định để làm mã Đủ nội dung chữ để sinh ít nhất 4 câu hỏi
Nhận biết qua API che_do_xac_minh = "sdt" che_do_xac_minh = "faq"
Cả hai gói đều không cam kết thời gian ở lại và thao tác trên trang. Không có mã theo dõi thì hệ thống không đo được hai chỉ số đó, nên không hứa. Cần cam kết hành vi thì dùng loại có gắn mã.

Tham số riêng của loại không gắn mã

Parameters Description
ma_xac_minh bắt buộc — gói unique user Đoạn chữ người làm phải gõ lại. Tối thiểu 4 ký tự, tối đa 60. Hệ thống tự mở trang đích và kiểm tra chuỗi này có thật trước khi trừ tiền.
anh_serp bắt buộc Đường dẫn ảnh chụp kết quả của bạn trên Google. Phải bôi che tên miền trong ảnh, chỉ chừa tiêu đề và mô tả — thấy tên miền là người làm gõ thẳng vào trình duyệt, không qua Google, lượt đó mất giá trị.
anh_vi_tri_ma bắt buộc — gói unique user Đường dẫn ảnh chụp chỗ mã hiển thị trên trang. Phải che bớt vài ký tự của mã — người làm nhìn ra mã nằm chỗ nào nhưng vẫn phải mở trang mới đọc đủ.
goi_y_vi_tri gói unique userCâu chỉ đường, tối đa 120 ký tự. Ví dụ: Ở chân trang, mục thông tin doanh nghiệp. Bỏ trống thì hệ thống dùng câu mặc định.
tang_toc 1 = bỏ giới hạn theo khung giờ, giao hết công suất tới khi hết số lượng của ngày. Mặc định 0. Số lượng mỗi ngày vẫn giữ nguyên, không vượt.

Ví dụ

POST /api/v2
{
  "key": "API_KEY_CUA_BAN",
  "action": "traffic_create",
  "name": "Chiến dịch không gắn mã",
  "traffic_key": "abc123",
  "package_id": 9,
  "url": "https://tenmien.com",
  "quantity": 500,
  "zone_1": 25, "zone_2": 25, "zone_3": 25, "zone_4": 25,
  "ma_xac_minh": "0123456789",
  "goi_y_vi_tri": "Ở chân trang, mục thông tin doanh nghiệp",
  "anh_serp": "https://cdn-cua-ban.com/anh-ket-qua-google.png",
  "anh_vi_tri_ma": "https://cdn-cua-ban.com/anh-vi-tri-ma.png",
  "tang_toc": 1
}

Lỗi thường gặp

Thông báo Nguyên nhân và cách sửa
Không tìm thấy mã này trên trang Chuỗi bạn khai không có trong nội dung chữ của trang. Có thể nó đang nằm trong ảnh, hoặc chỉ hiện sau khi trang chạy mã phía trình duyệt. Thêm nó vào chân trang dưới dạng chữ rồi gọi lại.
Mã này đang nằm trong tiêu đề hoặc mô tả trang Google hiển thị sẵn tiêu đề và mô tả ở trang kết quả, nên người làm trả lời được mà không cần mở web. Chọn chuỗi nằm trong phần nội dung.
Mã quá ngắn Dưới 4 ký tự thì đoán bừa quá dễ. Dùng chuỗi dài hơn.
Bạn chưa tải Ảnh 1 / Ảnh 2 Thiếu anh_serp hoặc anh_vi_tri_ma. Hai ảnh này bắt buộc: tên miền bị giấu có chủ ý nên ảnh kết quả Google là thứ duy nhất chỉ đúng trang cần bấm.
Trang này chỉ cho ra N câu hỏi dùng được gói kết hợp Trang đích quá ít nội dung chữ, hoặc thông tin nằm trong ảnh nên máy không đọc được. Dùng trang nhiều nội dung hơn, hoặc chuyển sang gói unique user.
Không tải được trang này Máy chủ không mở được url bạn khai. Kiểm tra đường dẫn, hoặc trang đang chặn truy cập tự động.
Người làm có công cụ thì không phải gõ lại mã. Ai dùng ứng dụng Android hoặc tiện ích Chrome của hệ thống sẽ được ghi nhận tự động bằng hành vi thật (vào từ Google, thời gian ở lại, độ cuộn trang). Bạn không phải khai báo gì thêm — cùng một chiến dịch phục vụ được cả hai nhóm.
Dành cho địa điểm trên Google Maps — không cần website. Người làm mở Google Maps, gõ đúng từ khoá bạn mua, kéo danh sách rồi bấm vào địa điểm của bạn. Để chứng minh đã bấm vào thật, họ phải đọc lại số điện thoại hoặc số nhà + tên đường đang hiển thị trên hồ sơ địa điểm.

Luồng gọi — hai bước

Không tra được địa điểm bằng tên riêng. Nguồn dữ liệu Google Maps tìm theo loại hình: "nha khoa" ra 20 kết quả, còn gõ thẳng "Nha Khoa Đà Nẵng Center" trả về 0 kết quả. Vì vậy phải tra danh sách trước rồi chọn địa điểm của bạn trong đó, chứ không khai tên.

Bước 1 — tra danh sách địa điểm bằng action = "serp_map" (xem mục Map places lookup ở cột trái). Lấy place_id của địa điểm bạn muốn chạy.

POST /api/v2
{
  "key": "API_KEY_CUA_BAN",
  "action": "serp_map",
  "query": "nha khoa",
  "location": "Đà Nẵng"
}

// -> data.places[]: { "place_id": "ChIJ...", "title": "...", "address": "...", "phone": "+8496...", ... }

Bước 2 — tạo chiến dịch bằng traffic_create, truyền place_id vừa lấy kèm đúng từ khoá và khu vực đã dùng ở bước 1.

Tham số riêng của gói Google Maps

Parameters Description
map_tu_khoa bắt buộc Từ khoá dùng để tra danh sách địa điểm, tối đa 160 ký tự. Gõ theo loại hình (nha khoa, quán cà phê, sửa xe máy), không phải tên riêng.
map_khu_vuc nên có Tỉnh/thành, tối đa 120 ký tự. Bỏ trống thì kết quả trải toàn quốc và rất dễ không có địa điểm của bạn. Nếu map_tu_khoa đã chứa tên khu vực thì hệ thống tự bỏ, không ghép lặp.
map_place_id bắt buộc place_id của địa điểm, lấy từ serp_map. Hệ thống tra lại đúng cặp từ khoá + khu vực và phải thấy place_id này trong kết quả thì mới cho tạo.
map_kieu "sdt" (mặc định) — người làm điền 3 số cuối bị che của số điện thoại. "diachi" — điền số nhà + tên đường.
Nên dùng sdt: số điện thoại chỉ hiện khi bấm mở hồ sơ, còn địa chỉ đôi khi Google in sẵn ngoài danh sách. Chỉ chọn diachi khi địa điểm chưa khai số điện thoại.
anh_serp không bắt buộc Ảnh minh hoạ địa điểm. Bỏ trống thì hệ thống tự lấy ảnh của chính địa điểm trên Google Maps. Chỉ bắt buộc khi địa điểm không có ảnh nào.
tang_toc 1 = bỏ giới hạn theo khung giờ, giao hết công suất tới khi hết số lượng của ngày. Mặc định 0.
Số điện thoại và địa chỉ do hệ thống tự đọc lại từ Google Maps lúc tạo chiến dịch, không nhận chữ bạn gửi lên. Đó là đáp án của nhiệm vụ — để phía gọi API đặt được thì khai sai một ký tự là mọi người làm đọc đúng trên Maps đều bị chấm trượt.

Ví dụ

POST /api/v2
{
  "key": "API_KEY_CUA_BAN",
  "action": "traffic_create",
  "name": "Nha khoa Đà Nẵng - Maps",
  "traffic_key": "abc123",
  "package_id": 10,
  "quantity": 500,
  "zone_1": 25, "zone_2": 25, "zone_3": 25, "zone_4": 25,
  "map_tu_khoa": "nha khoa",
  "map_khu_vuc": "Đà Nẵng",
  "map_place_id": "ChIJ-07EesYZQjER8Ty4kR4dV-Y",
  "map_kieu": "sdt",
  "keywords": [
    { "keyword": "nha khoa đà nẵng", "budget": 100 },
    { "keyword": "trồng răng implant đà nẵng", "budget": 100 }
  ]
}

Từ khoá phải ra được địa điểm

Mỗi giờ hệ thống tra lại 20 kết quả Maps của từng từ khoá. Từ khoá không thấy địa điểm của bạn sẽ bị cảnh báo, và trượt hai lần liên tiếp thì tạm dừng — người làm cuộn cả ngày cũng không tìm ra thì nhận việc rồi bỏ, tiền nằm chết trong chiến dịch. Từ khoá tự chạy lại khi địa điểm lên hạng. Xem trạng thái qua traffic_detail.

Lỗi thường gặp

Thông báo Nguyên nhân và cách sửa
Google Maps không trả về địa điểm nào cho từ khoá … Bạn đang tra bằng tên riêng của địa điểm. Đổi sang từ khoá theo loại hình rồi tra lại.
Địa điểm bạn chọn không còn trong kết quả của từ khoá này map_place_id không khớp cặp map_tu_khoa + map_khu_vuc bạn gửi. Gọi lại serp_map với đúng cặp đó rồi lấy place_id mới.
… chưa khai số điện thoại trên Google Maps Địa điểm không có số nên không làm đề bài sdt được. Bổ sung số vào hồ sơ địa điểm, hoặc chuyển map_kieu = "diachi".
Địa chỉ … không có số nhà Đề bài diachi cần số nhà; địa chỉ chỉ có tên đường thì người làm đọc ngoài danh sách kết quả là trả lời được, không chứng minh được đã bấm vào.
Chưa tra được địa điểm ngay lúc này Nguồn tra cứu đang lỗi hoặc quá tải. Chưa trừ tiền — gọi lại sau ít phút.
Mỗi người chỉ làm 1 lượt cho mỗi địa điểm, trọn đời. Số điện thoại và địa chỉ là thông tin cố định, biết một lần là mọi lượt sau không còn giá trị. Vì vậy tốc độ giao phụ thuộc số người mới vào hệ thống mỗi ngày, và không cam kết thời gian ở lại hay thao tác trong hồ sơ địa điểm — trên Google Maps không gắn được mã đo.
Parameters Description
key API Key
action "traffic_update"
id Campaign ID
name Campaign Name
image Image URL
zone_1 % Quantity (00:00 - 05:59)
zone_2 % Quantity (06:00 - 11:59)
zone_3 % Quantity (12:00 - 17:59)
Example response
{
      "status": "success",
      "message": "Success"
    }
Parameters Description
key API Key
action "traffic_buymore"
id Campaign ID
quantity Quantity to buy more
Example response
{
      "status": "success",
      "message": "Success"
    }
Parameters Description
key API Key
action "traffic_refund"
id Campaign ID
Example response
{
      "status": "success",
      "message": "Success"
    }
Muốn tạo chiến dịch và từ khoá trong một lệnh duy nhất? Dùng tham số keywords của Create Traffic. Lệnh này vẫn giữ nguyên để thêm từ khoá cho chiến dịch đã có.
Parameters Description
key API Key
action "traffic_add_key"
campaign_id Campaign ID
keyword Keyword (if creating new)
budget Budget (traffic/day) — số lượt mỗi ngày cho RIÊNG từ khoá này. Tổng budget các từ khoá không được vượt quantity của chiến dịch.
url_step2 Gói 2 bước: bắt buộc URL trang thứ hai.
Gói 1 bước: không bắt buộc URL trang riêng của từ khoá này. Phải cùng tên miền với chiến dịch. Dùng để chỉ đường cho người làm và để dựng ảnh kết quả Google của từ khoá — không ràng buộc: người làm vào từ Google nên có thể rơi vào trang khác cùng website, trường hợp đó vẫn được cấp mã bình thường.
image không bắt buộc Ảnh hiển thị trên Google của riêng từ khoá này. Bỏ trống thì hệ thống tự dựng ảnh thẻ kết quả Google của đúng cặp (từ khoá, URL) ở trên; dựng không được thì dùng ảnh chiến dịch.
key_id Keyword ID (if updating)
status Status (active/paused) (if updating)
Example response
{
      "status": "success",
      "message": "Success"
    }
Cách dùng khuyến nghị: tạo một chiến dịch cho cả tên miền (traffic_create với url = tên miền, bỏ trống image), rồi gọi traffic_add_key nhiều lần — mỗi từ khoá kèm url_step2 (trang riêng) và budget (lượt/ngày). Không cần tạo mỗi URL một chiến dịch.
Parameters Description
key API Key
action "traffic_edit_key"
campaign_id Campaign ID
key_id Keyword ID (to edit)
keyword Keyword
budget Limit / Day
Example response
{
      "status": "success",
      "message": "Success"
    }
Parameters Description
key API Key
action "traffic_delete_key"
id Keyword ID
Example response
{
      "status": "success",
      "message": "Success"
    }
Parameters Description
key API Key
action "traffic_detail"
id Campaign ID
yearmonth Optional: format Y-m (e.g. 2023-10)
Example response
{
      "status": "success",
      "data": {
        "campaign": {...},
        "package": {...},
        "daily": {
          "2023-10-01": {
            "budget": 100,
            "hits": 50,
            "spent": 5000
          },
          ...
        },
        "current_ym": "2023-10"
      }
    }
Earn money — Account must be verified (KYC) to receive tasks. type: review_map | report | seeding | traffic. traffic requires Vietnam IP & no proxy/VPN; the pass code is generated only by a real browser visit.
ParametersDescription
keyAPI Key
action"earn_balance"
Example response
{
  "status": "success",
  "data": {
    "balance_earn": 250000,
    "balance_commission": 80000,
    "total_earn": 1250000,
    "total_commission": 300000,
    "total_withdraw": 900000,
    "currency": "VND"
  }
}
ParametersDescription
keyAPI Key
action"earn_task_types"
Example response
{
  "status": "success",
  "data": [
    { "type": "review_map", "label": "Review Map",         "enabled": true,  "pay_per_task": 5000 },
    { "type": "report",     "label": "Báo lỗi Review Map", "enabled": true,  "pay_per_task": 3000 },
    { "type": "seeding",    "label": "Nhiệm vụ Seeding",   "enabled": true,  "pay_per_task": null },
    { "type": "traffic",    "label": "Nhiệm vụ Traffic",   "enabled": false, "pay_per_task": null }
  ],
  "verified": true
}
ParametersDescription
keyAPI Key
action"earn_get_task"
typereview_map | report | seeding | traffic
platformTùy chọn — sub-filter, meaning depends on type:
  • type=seeding → facebook, tiktok, youtube…
  • type=traffic → earn (paid tasks — DEFAULT if omitted), free (free-buff tasks), proxy, wheel
Leaving it empty on a traffic call returns PAID tasks. To get the free-buff tasks you see on the website, send platform=free.
user_iptraffic: REQUIRED — the worker's real public IP (the one their browser will open the website with)
user_agenttraffic: REQUIRED — the worker's browser User-Agent, copied verbatim
Traffic tasks are bound to the worker's IP and browser. The widget on the target website only shows the "LẤY MÃ" button when it finds a pending task whose ip and user_agent match the visit exactly. You call this API from your server, so we cannot detect them — send user_ip and user_agent of the worker, otherwise the button never appears and the task simply expires.
Example response
{
  "status": "success",
  "message": "Get Mission Successful",
  "data": {
    "id": 12345,
    "status": "pending",
    "place_name": "ABC Coffee",
    "address": "12 Lê Lợi, Q1, HCM",
    "link": "https://maps.google.com/...",
    "review": "Quán đẹp, phục vụ tốt!",
    "stars": 5,
    "money": 5000
  }
}
The data object differs by type (review_map/report/seeding/traffic). Read money for the pay of this task.
Ví dụ phản hồi — type=traffic
{
  "status": "success",
  "message": "Nhận nhiệm vụ thành công",
  "data": {
    "id": 204107,
    "keyword": "sửa máy lạnh thủ đức",
    "url_keyword": "https://tenmien.com/dich-vu/sua-may-lanh-thu-duc",
    "image": "https://drive.google.com/thumbnail?id=...&sz=w600",
    "name": "Chiến dịch điện lạnh",
    "pay": 680,
    "time": 60,
    "status": "pending"
  }
}
Mới: url_keyword là trang nên vào cho từ khoá này — hãy hiển thị cho người làm để họ bấm đúng kết quả. Không bắt buộc: người làm vào từ Google nên có thể rơi vào trang khác, miễn cùng tên miền là vẫn được cấp mã. Rỗng nghĩa là không có trang gợi ý.
image là ảnh thẻ kết quả Google của đúng từ khoá đó — cho người làm xem để biết phải bấm vào kết quả nào trên trang tìm kiếm.
No task available
{
  "status": "error",
  "message": "Hiện tại đã hết nhiệm vụ...",
  "chan_doan": {
    "ten_mien_dang_goi":   "viraly.vn",
    "lay_nhiem_vu_tu":     "viraly.vn",
    "chien_dich_con_luot": 0,
    "khung_gio":           "zone_1",
    "ip_nguoi_lam":        "27.72.88.99",
    "ip_nay_da_dung":      0,
    "chu_ky_ngay":         1,
    "goi_y":               "..."
  }
}
traffic only — when no task is returned, chan_doan tells you which gate blocked it. chien_dich_con_luot: 0 means you are calling a domain that has no running campaign.
ParametersDescription
keyAPI Key
action"earn_submit_task"
typereview_map | report | seeding | traffic
idTask ID from get task
proofreview_map: Google review URL · report: report URL · traffic: pass code · seeding: optional confirmation URL
images[]seeding — array of proof image URLs (publicly accessible)
noteOptional note
user_iptraffic: REQUIRED — the same IP you sent to earn_get_task; the pass code is only valid from that IP
user_agentTùy chọn — the worker's browser User-Agent
Example response
{ "status": "success", "message": "Sending successful" }
ParametersDescription
keyAPI Key
action"earn_cancel_task"
typereview_map | report | seeding | traffic
idTask ID
Example response
{ "status": "success", "message": "Canceled Successful" }
ParametersDescription
keyAPI Key
action"earn_task_status"
typereview_map | report | seeding | traffic
idTùy chọn — one task. Omit to list latest tasks (paginated)
pageOptional, default 1 (when listing)
Example response
{
  "status": "success",
  "data": {
    "id": 12345,
    "type": "review_map",
    "task_status": "success",
    "money": 5000,
    "created_at": "2026-06-25T08:00:00+07:00",
    "updated_at": "2026-06-25T08:20:00+07:00"
  }
}
task_status: pending · running · waiting · success · failed · expired · canceled
Different endpoint — this is NOT /api/v2 and has no action.
POST https://likevietnam.net/api/v1/get-free
Auth by header: Authorization: Bearer {api_key}
Where does traffic_code come from? It is the pass code produced by the LẤY MÃ button after a real browser visit on the campaign website — the same value you send as proof to earn_submit_task with type=traffic. Each code can be redeemed once.
ParametersDescription
object_idRequired — link to the post / profile / video to boost
service_idRequired — id NHÓM DỊCH VỤ (không phải id máy chủ của action=services). Tra bằng /api/v1/free-services ở khối bên dưới. Link phải đúng nền tảng của nhóm: dán link TikTok vào nhóm Instagram sẽ bị từ chối.
traffic_codeRequired — the traffic mission pass code
server_idTùy chọn — pick one server; it must belong to the free-eligible group. Omit it and the system chooses for you
commentsComment services only — one comment per line
Example request
curl -X POST "https://likevietnam.net/api/v1/get-free" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -d "service_id=1" \
  -d "object_id=https://www.facebook.com/xxx/posts/yyy" \
  -d "traffic_code=ABC123"
Example response
{
  "status": "success",
  "message": "Order created successfully",
  "order": 1997856
}
Common errors: Vui lòng nhập mã hoàn thành nhiệm vụ traffic · Không có server nào đủ điều kiện nhận miễn phí · Máy chủ bạn chọn không nằm trong nhóm được nhận miễn phí · Link bạn dán không thuộc {nền tảng}
Tra danh mục dịch vụ miễn phí
Trả về cây nền tảng → dịch vụ → máy chủ đang mở miễn phí, kèm đúng service_id và server_id để gửi sang get-free. Danh mục này giống hệt trang /service-free nên không bao giờ lệch.
curl "https://likevietnam.net/api/v1/free-services" \
  -H "Authorization: Bearer YOUR_API_KEY"
Hoặc qua API v2: action=free_services
Example response
{
  "status": "success",
  "data": [
    {
      "id": 2, "ten": "Tiktok",
      "dich_vu": [
        { "id": 15, "ten": "Tăng Lượt Thích Video",
          "may_chu": [ { "id": 1187854, "ten": "...", "min": 10, "chi_phi": 83 } ] }
      ]
    }
  ]
}
Different endpoint — POST https://likevietnam.net/api/v1/proxy-free-claim
Auth by header: Authorization: Bearer {api_key}
Uses the same traffic_code as Free order — one traffic mission can be redeemed for either a free boost or a free proxy, not both.
ParametersDescription
traffic_codeRequired — the traffic mission pass code
Example request
curl -X POST "https://likevietnam.net/api/v1/proxy-free-claim" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -d "traffic_code=ABC123"
Example response
{
  "status": "success",
  "message": "...",
  "data": { "host": "...", "port": "...", "username": "...", "password": "..." }
}
The admin can switch this programme off; while closed the endpoint returns Chương trình nhận proxy miễn phí đang tạm đóng.
Your users do real Facebook interactions (comment / reaction / share) on customers' posts and get paid per job. The system reads the post itself to verify — no screenshots, no manual approval.

Same flow as the /nhiem-vu-facebook page, exposed for partners who want to build their own interface. The key belongs to the worker, and the money goes into that worker's wallet on your site.

Flow
cross_accounts ──► no verified account? ──► cross_account_code ──► post the code publicly
                                                    └──► cross_account_verify

cross_jobs ──► cross_claim ──► worker does it on Facebook ──► cross_submit
                                                                    │
                              the system reads the post ──┴──► ok: held 24h, then paid
                                                                         missed: cross_appeal
A worker with no verified Facebook account can browse jobs but cannot claim any. The number of jobs they may hold at the same time equals their number of verified accounts (max 3) — that is the lever to push in your interface.
🔒 This channel needs approval before use.
Log in, then send the request below.
Request access
curl -X POST "https://likevietnam.net/api/v2" \
  -d "key=YOUR_API_KEY" \
  -d "action=cross_request_access" \
  -d "ten=Tên đối tác" \
  -d "lien_he=zalo/telegram/email" \
  -d "ghi_chu=Bạn định dùng để làm gì, dự kiến bao nhiêu người làm"
The full specification appears here once approved.
Look up the real Google results page for a keyword: position, title, link, description, domain, favicon. Charged per lookup from your balance.
Parameters Description
keyAPI Key
action"serp"
queryKeyword to look up. Max 200 characters.
glOptional — country, default vn
hlOptional — language, default vi
limitOptional — number of results, 1–10, default 10
pageOptional — result page, 1–10, default 1
Giá: 75đ / lookup. The exact amount charged is returned in charged, and your remaining balance in balance.
Repeated lookups are free: the same query + gl + hl + limit + page within 5 minutes is served from cache with cached: true and charged: 0. Safe to retry after a timeout — you will not be billed twice.
Rate limit: 30 requests per minute per account.
Track your usage: every lookup is logged — what was charged, what came from cache, what failed. Open usage history ↗
Example request
curl -X POST https://likevietnam.net/api/v2 \
  -d "key=YOUR_API_KEY" \
  -d "action=serp" \
  -d "query=áo thun nam" \
  -d "gl=vn" -d "hl=vi" -d "limit=10"
Example response
{
  "status": "success",
  "query": "áo thun nam",
  "gl": "vn",
  "hl": "vi",
  "page": 1,
  "total_results": 11500000,
  "search_time": 0.42,
  "charged": 75,
  "balance": 1250000,
  "cached": false,
  "results": [
    {
      "position": 1,
      "title": "Áo thun nam - Giá Tốt, Miễn Phí Vận Chuyển - Shopee",
      "link": "https://shopee.vn/list/áo thun/nam",
      "snippet": "Mua online áo thun nam chất lượng, mới nhất, giảm tới 50%...",
      "displayed_link": "shopee.vn",
      "domain": "shopee.vn",
      "favicon": "https://www.google.com/s2/favicons?domain=shopee.vn&sz=32",
      "thumbnail": "https://encrypted-tbn0.gstatic.com/images?q=...",
      "breadcrumb": "shopee.vn › áo thun"
    }
  ]
}
Errors
HTTP Meaning
400Missing or invalid parameter (empty keyword, limit out of range...)
402Not enough balance
403Account is locked
429Too many requests — wait for the next minute
503Source is busy or temporarily out of quota — safe to retry later. Nothing is charged.
Nothing is charged when a lookup fails. If you get a 503, retry after a short pause instead of looping — repeated calls only consume your rate limit.
Look up businesses on the map for a keyword and area: map position, rating, review count, phone, website, opening hours and coordinates. Charged per lookup, not per place.
Parameters Description
keyAPI Key
action"serp_map"
queryWhat to look for: "coffee shop", "dentist"… Max 160 characters.
locationStrongly recommended — the area, e.g. Quận 1 TP.HCM. Appended to the keyword; see the note below.
llOptional — map centre @latitude,longitude,zoomz, e.g. @10.7769,106.7009,13z. Plain 10.7769,106.7009 is accepted too.
glOptional — country, default vn
hlOptional — language, default vi
limitOptional — number of places, 1–20, default 20
Use location, do not rely on ll alone: results for a keyword are cached upstream by keyword text only. Sending the same query with different coordinates returns the first area's places. Putting the area in location makes each area a distinct keyword, so it always returns the right city.
Giá: 150đ / lookup — the same price whether 1 or 20 places come back. The exact amount charged is returned in charged, and your remaining balance in balance.
Repeated lookups are free: the same query + location + limit within 5 minutes returns cached: true and charged: 0.
Rate limit: 30 requests per minute per account — shared with action=serp.
No paging: 20 places per lookup is the ceiling. To get more, change the keyword or the area — there is no page parameter.
Prefer clicking over coding? The same lookup runs on-screen, with CSV export. Open the map places tool ↗
Example request
curl -X POST https://likevietnam.net/api/v2 \
  -d "key=YOUR_API_KEY" \
  -d "action=serp_map" \
  -d "query=nha hàng hải sản" \
  -d "location=Đà Nẵng" \
  -d "limit=20"
Example response
{
  "status": "success",
  "query": "nhà hàng hải sản",
  "location": "Đà Nẵng",
  "gl": "vn",
  "hl": "vi",
  "charged": 150,
  "balance": 1250000,
  "cached": false,
  "total": 20,
  "places": [
    {
      "position": 1,
      "title": "Mộc quán Seafood Đà Nẵng",
      "place_id": "ChIJ_bKDMykvdTERlAcbXthvEuE",
      "cid": "0x31752f293383b2fd:0xe1126fd85e1b0794",
      "category": "Nhà hàng hải sản",
      "categories": ["Nhà hàng hải sản"],
      "rating": 4.8,
      "reviews": 28092,
      "price": "100.000-200.000 ₫",
      "address": "Lô 9-10 Võ Nguyên Giáp, Sơn Trà, Đà Nẵng, Việt Nam",
      "latitude": 16.0544,
      "longitude": 108.2455,
      "phone": "+84905665058",
      "website": "https://mocseafood.com/",
      "domain": "mocseafood.com",
      "hours": [ { "day": "Thứ Hai", "hours": "09:00–22:00" } ],
      "thumbnail": "https://lh3.googleusercontent.com/...",
      "maps_url": "https://maps.google.com/?cid=16217076...",
      "reviews_url": "https://search.google.com/local/reviews?placeid=ChIJ..."
    }
  ]
}
Field notes: website, phone, price and thumbnail can be empty — not every business publishes them. rating is 0 when a place has no reviews yet; treat that as "no data", not "bad".
Errors
HTTP Meaning
400Missing or invalid parameter (empty keyword, limit out of range...)
402Not enough balance
403Account is locked
429Too many requests — wait for the next minute
503Source is busy or temporarily out of quota — safe to retry later. Nothing is charged.
Nothing is charged when a lookup fails. An empty places array is a successful lookup that found nothing — it is billed, so send a realistic keyword and area.
Four Google search types share one request shape. Set action to serp_news, serp_videos, serp_images or serp_shopping. Charged per lookup; cached results (5 min) are free.
ParametersDescription
keyAPI Key
actionserp_news | serp_videos | serp_images | serp_shopping
queryKeyword to search. Max 200 characters.
glOptional — country, default vn
hlOptional — language, default vi
limitOptional — number of results, 1–20, default 10
Request
curl -X POST "https://likevietnam.net/api/v2" \
  -d "key=YOUR_API_KEY" \
  -d "action=serp_news" \
  -d "query=giá cà phê" \
  -d "gl=vn" -d "hl=vi" -d "limit=10"
Response
{
  "status": "success",
  "type": "news",
  "query": "giá cà phê",
  "total": 10,
  "charged": 26,
  "balance": 74000,
  "cached": false,
  "results": [ { "position": 1, "title": "...", "link": "https://...", "snippet": "...", "publisher": "...", "date": "...", "thumbnail": "https://..." } ]
}
Result fields by type: serp_news: title, link, snippet, publisher, date, author, thumbnail. serp_videos: title, link, thumbnail, duration, channel, published, views, snippet. serp_images: title, image_url, width, height, source_url. serp_shopping: title, price, original_price, discount, merchant, shipping, rating, rating_count, thumbnail, link.
Errors
HTTPMeaning
400Missing or invalid parameter
402Not enough balance
429Too many requests — wait for the next minute
503Source busy or out of quota — retry later. Nothing is charged.
Check whether an email address is real and reachable before you send to it. Charged per lookup; repeated checks of the same address within 5 minutes are free.
ParametersDescription
keyAPI Key
actionverify_email
emailThe email address to verify.
Request
curl -X POST "https://likevietnam.net/api/v2" \
  -d "key=YOUR_API_KEY" \
  -d "action=verify_email" \
  -d "[email protected]"
Response
{
  "status": "success",
  "email": "[email protected]",
  "result": "valid",
  "domain": "example.com",
  "message": "Email is valid and successfully reachable.",
  "details": { "format": "valid", "mailbox_status": "valid", "mailbox_type": "professional" },
  "charged": 26,
  "balance": 74000
}
Field notes: result is valid, invalid or unknown. Use unknown as "cannot confirm", not "bad".
Each successful lookup is charged the price below, deducted from your account balance. Repeats of the same request within 5 minutes are served from cache and not charged; failed lookups are not charged.
action Description Price / call
serp Google web search 75 đ
serp_map Google Maps places 150 đ
serp_news Google News 26 đ
serp_videos Google Videos 26 đ
serp_images Google Images 26 đ
serp_shopping Google Shopping 26 đ
verify_email Email verification 130 đ
Get prices via API

Fetch the current price list programmatically with action=prices — free, not charged. Use it to show live prices in your own app.

curl -X POST "https://likevietnam.net/api/v2" \
  -d "key=YOUR_API_KEY" \
  -d "action=prices"
{
  "status": "success",
  "balance": 74000,
  "prices": [
    { "action": "serp",         "description": "Google web search results", "price_per_call": 75,  "currency": "VND" },
    { "action": "serp_map",     "description": "Google Maps places",        "price_per_call": 150, "currency": "VND" },
    { "action": "serp_news",    "description": "Google News",               "price_per_call": 26,  "currency": "VND" }
  ]
}

Xin chào! 👋
Bạn cần hỗ trợ gì không?

Hỗ trợ khách hàng
Đội ngũ luôn sẵn sàng hỗ trợ bạn 💪
Đặt đơn Nạp tiền Hỗ trợ Đơn hàng