Authentication
All API requests require an API key. Sign in with Google at /settings to create one.
Plans
| Feature | Free | Pro | Unlimited |
|---|---|---|---|
| Economic data (exchange, gold, fuel, coffee...) | ✓ | ✓ | ✓ |
| Interest rates (40+ banks) | ✓ | ✓ | ✓ |
| CPI, inflation, economic indicators | ✓ | ✓ | ✓ |
| Oil & coffee international futures | ✓ | ✓ | ✓ |
| AI agent daily summary | ✓ | ✓ | ✓ |
| Grocery prices (40K+ products) | — | ✓ | ✓ |
| COICOP classification & unit pricing | — | ✓ | ✓ |
| CSV export | — | ✓ | ✓ |
| Daily API calls | 100 | 10,000 | Unlimited |
API Key (Header)
Authorization: Bearer dl_your_api_key_here
API Key (Query)
GET /api/exchange?api_key=dl_your_api_key_here
Rate Limit Headers
X-RateLimit-Plan: free | pro | unlimited X-RateLimit-Limit: 100 (or "unlimited") X-RateLimit-Remaining: 99 X-RateLimit-Reset: 1714003200
Base URL
https://dulieu.dev
Response Format
{
"data": [...],
"meta": {
"source": "domain.com",
"count": 42,
"updated_at": "2026-04-23T14:00:00.000Z"
}
}Endpoints
32 endpoints/api/exchangeCurrency exchange rates (VND). Sources: Vietcombank, CafeF.
Query Parameters
datestringSingle date (YYYY-MM-DD)fromstringStart date (YYYY-MM-DD)tostringEnd date (YYYY-MM-DD)Response
{ "data": [{ "date": "2026-04-23", "currency": "USD", "buy": 25000, "sell": 25500, "transfer": 25200, "source": "vietcombank.com.vn", "bank": "VCB" }], "meta": { "source": "vietcombank.com.vn", "count": 9, "updated_at": "..." } }/api/goldGold prices by type (SJC, rings, jewelry). Sources: DOJI, CafeF.
Query Parameters
datestringSingle date (YYYY-MM-DD)fromstringStart date (YYYY-MM-DD)tostringEnd date (YYYY-MM-DD)Response
{ "data": [{ "date": "2026-04-23", "type": "SJC 1L-10L", "buy_price": 92000000, "sell_price": 94000000, "unit": "tael", "source": "giavang.doji.vn" }], "meta": { "source": "giavang.doji.vn", "count": 8 } }/api/silverSilver prices (11 types). Source: CafeF.
Query Parameters
datestringSingle date (YYYY-MM-DD)fromstringStart date (YYYY-MM-DD)tostringEnd date (YYYY-MM-DD)Response
{ "data": [{ "date": "2026-04-23", "type": "Bạc miếng SJC", "buy_price": 1200000, "sell_price": 1400000, "unit": "tael" }], "meta": { "source": "cafef.vn" } }/api/weatherWeather data for 70+ Vietnamese cities (all province capitals + tourist destinations).
Query Parameters
datestringSingle date (YYYY-MM-DD)fromstringStart date (YYYY-MM-DD)tostringEnd date (YYYY-MM-DD)citystringFilter by city name (partial match)Response
{ "data": [{ "date": "2026-05-21", "city": "Hà Nội", "temperature": 28.5, "humidity": 65, "conditions": "mây thưa", "geo_location_id": 71 }] }/api/weather/forecast5-day weather forecast for 70+ Vietnamese cities. Source: OpenWeatherMap.
Query Parameters
datestringFilter by target_date (YYYY-MM-DD)fromstringStart target_date (YYYY-MM-DD)tostringEnd target_date (YYYY-MM-DD)citystringFilter by city name (partial match)Response
{ "data": [{ "forecast_date": "2026-05-21", "target_date": "2026-05-22", "city": "Đà Nẵng", "temp_min": 26.0, "temp_max": 33.0, "humidity": 70, "conditions": "mây thưa" }] }/api/weather/summaryToday's weather summary for all cities.
Response
{ "data": [{ "city": "Hà Nội", "temperature": 28.5, "temp_unit": "°C", "humidity": 65, "humidity_unit": "%", "conditions": "mây thưa" }] }/api/fuelFuel prices (6 types, zone 1 & 2). Source: webgia.com.
Query Parameters
datestringSingle date (YYYY-MM-DD)fromstringStart date (YYYY-MM-DD)tostringEnd date (YYYY-MM-DD)Response
{ "data": [{ "date": "2026-04-23", "fuel_type": "RON 95-V", "zone": 1, "price": 23800 }] }/api/coffeeCoffee prices by region. Source: webgia.com.
Query Parameters
datestringSingle date (YYYY-MM-DD)fromstringStart date (YYYY-MM-DD)tostringEnd date (YYYY-MM-DD)Response
{ "data": [{ "date": "2026-04-23", "region": "Đắk Lắk", "price": 125000, "unit": "VND/kg" }] }/api/interestBank deposit & lending rates (28+ banks, 8 terms). Sources: webgia, VCB, BIDV, CafeF.
Query Parameters
datestringSingle date (YYYY-MM-DD)fromstringStart date (YYYY-MM-DD)tostringEnd date (YYYY-MM-DD)Response
{ "data": [{ "date": "2026-04-23", "bank": "Vietcombank", "term_months": 12, "deposit_rate": 4.7, "lending_rate": null }] }/api/indicatorsEconomic indicators (CPI, inflation, IIP). Source: nso.gov.vn.
Query Parameters
datestringSingle date (YYYY-MM-DD)fromstringStart date (YYYY-MM-DD)tostringEnd date (YYYY-MM-DD)Response
{ "data": [{ "indicator": "CPI", "value": 103.2, "period": "2026-03", "yoy_change": 3.2 }] }/api/lotteryVietnam lottery results (north/central/south, 41 provinces). Sources: CafeF + Minh Ngọc.
Query Parameters
datestringSingle date (YYYY-MM-DD)fromstringStart date (YYYY-MM-DD)tostringEnd date (YYYY-MM-DD)sourcestringFilter by source (cafef.vn or minhngoc.net.vn)Response
{ "data": [{ "date": "2026-04-23", "region": "south", "province": "TP.HCM", "prize": "Giải Đặc biệt", "numbers": "123456" }] }/api/pepperPepper prices — domestic (5 regions) + international (India Kochi). Source: giatieu.com.
Query Parameters
datestringSingle date (YYYY-MM-DD)fromstringStart date (YYYY-MM-DD)tostringEnd date (YYYY-MM-DD)Response
{ "data": [{ "date": "2026-05-20", "region": "Đắk Lắk", "price": 148000, "unit": "VND/kg" }] }/api/commoditiesAll commodity prices — crude oil (WTI, Brent), international coffee futures.
Query Parameters
datestringSingle date (YYYY-MM-DD)fromstringStart date (YYYY-MM-DD)tostringEnd date (YYYY-MM-DD)symbolstringFilter by symbol (e.g. WTI, BRENT, ROBUSTA)Response
{ "data": [{ "date": "2026-05-20", "symbol": "WTI", "name": "WTI Crude Oil", "price": 72.50, "unit": "USD/barrel" }] }/api/groceriesGrocery prices (56K+ products, COICOP classified, unit pricing). Pro plan required.
Query Parameters
storestringFilter by store (e.g. lottemart, cooponline)categorystringFilter by categorylimitnumberMax results (default: 500)Response
{ "data": [{ "store": "lottemart", "name": "Sữa TH True Milk 1L", "price": 32000, "coicop": "01.1.4", "unit_price_per_l": 32000 }] }/api/groceries/summaryGrocery category averages with COICOP codes. Pro plan required.
Response
{ "data": [{ "category": "Sữa", "coicop": "01.1.4", "products": 450, "avg_price": 85000, "stores": 4 }] }/api/groceries/storesStore product counts and latest crawl dates.
Response
{ "data": [{ "store": "lottemart", "products": 26610, "latest_date": "2026-05-20" }] }/api/drugsDrug & pharmacy prices (12K+ products, COICOP 06 classified). Pharmacity, Long Chau.
Query Parameters
storestringFilter by store (pharmacity, longchau)limitnumberMax results (default: 500)Response
{ "data": [{ "store": "pharmacity", "name": "Panadol Extra", "price": 52000, "is_drug": 1, "is_prescription": 0, "coicop": "06.1.1" }] }/api/drugs/summaryDrug category averages with COICOP 06 codes and drug/Rx counts.
Response
{ "data": [{ "category": "Thuốc", "coicop": "06.1.1", "products": 5431, "drugs": 5431, "prescription": 4309 }] }/api/drugs/storesPharmacy product counts and latest crawl dates.
Response
{ "data": [{ "store": "pharmacity", "products": 7610, "latest_date": "2026-05-20" }] }/api/geoVietnamese administrative geography (provinces, districts, wards).
Query Parameters
provincestringProvince code or name (partial match)Response
{ "data": [{ "province_code": "79", "province_name": "TP. Hồ Chí Minh", "district_code": null }] }/api/summaryDaily summary of all data domains. Ideal for AI agent daily briefing.
Response
{ "date": "2026-05-20", "last_crawl": "...", "exchange": [...], "gold": [...], "weather": [...], "fuel": [...], "coffee": [...], "interest": [...], "indicators": [...] }/api/statsAPI usage statistics — by key, by user, by endpoint, by day. Admin only.
Query Parameters
daysnumberLookback period (default: 7)Response
{ "overview": { "total": 1234, "unique_keys": 5 }, "by_key": [...], "by_user": [...], "by_endpoint": [...] }/api/crawl-logsCrawler execution history.
Query Parameters
limitnumberMax results (default: 20)Response
{ "data": [{ "crawler": "exchange-vietcombank", "status": "success", "records_inserted": 9, "duration_ms": 1200 }] }/api/electronicsElectronics prices from 5 major Vietnamese retailers (TGDD, CellphoneS, FPT Shop, Hoang Ha Mobile, Di Dong Viet). 80K+ products with ratings, reviews, variants.
Query Parameters
storestringFilter by store (thegioididong, cellphones, fptshop, hoanghamobile, didongviet)brandstringFilter by brandcategorystringFilter by category (partial match)limitnumberMax results (default: 500)Response
{ "data": [{ "store": "thegioididong", "name": "iPhone 15 Pro Max", "price": 29990000, "brand": "Apple", "rating": 4.5, "in_stock": 1 }] }/api/electronics/summaryElectronics store-level summary — product counts, avg prices, brand/category diversity, ratings.
Response
{ "data": [{ "store": "thegioididong", "products": 9000, "avg_price": 8500000, "categories": 15, "brands": 120, "avg_rating": 4.2 }] }/api/electronics/storesElectronics store product counts and latest crawl dates.
Response
{ "data": [{ "store": "cellphones", "products": 58000, "crawl_days": 15, "latest_date": "2026-05-20" }] }/api/provinces/summaryVietnam 2025 province/ward merge summary. 63 → 34 provinces, 3,321 wards. Before/after metrics: Population, Area, Density, GRDP, Budget.
Response
{ "slug": "vn-2025-province-merge", "total_before": 63, "total_after": 34, "metrics": [...], "before": {...}, "after": {...} }/api/provinces/mapProvince GeoJSON with merge metadata. Returns Leaflet-ready GeoJSON + per-province metrics for choropleth coloring.
Response
{ "data": [{ "id": "An Giang", "name": "An Giang", "merged_from": "...", "metrics": {...} }], "geoJSON": {...}, "metricExtents": {...} }/api/provinces/wardsSearch merged wards (3,321 total). Supports search, province filter, pagination.
Query Parameters
qstringSearch by ward name (new or old)provincestringFilter by province name (exact)per_pagenumberResults per page (default: 50, max: 5000)Response
{ "data": [{ "new_name": "Phường 1", "province": "TP HCM", "old_names": "Phường 1, Phường 2" }], "meta": { "total_wards": 3321 } }/api/blogEditorial blog posts (AI-generated posts are flagged via ai_generated and always cite sources). Newest first.
Query Parameters
categorystringFilter by category slug (e.g. tin-kinh-te)limitnumberMax results (default: 50, max: 200)Response
{ "data": [{ "slug": "...", "title": "...", "summary": "...", "ai_generated": true, "cadence": "daily", "category": "tin-kinh-te", "published_at": "..." }], "meta": { "count": 12, "updated_at": "..." } }/api/blog/categoriesBlog categories with publish cadence (daily/weekly/monthly/quarterly/biannual/annual) and post counts.
Response
{ "data": [{ "slug": "tin-kinh-te", "name_vi": "Tin Kinh Tế Hàng Ngày", "cadence": "daily", "post_count": 12 }] }/api/blog/:slugSingle blog post including markdown body and source attributions (source_refs).
Response
{ "data": { "slug": "...", "title": "...", "body_md": "...", "ai_generated": true, "ai_model": "...", "source_refs": [{ "title": "...", "url": "...", "source": "vnexpress" }], "cadence": "daily" } }API Key Management
/api/keysList your API keys. Requires authentication (session cookie).
Response
{ "data": [{ "id": "uuid", "name": "my-agent", "key_prefix": "dl_a1b2c3d4", "created_at": "..." }] }/api/keysCreate a new API key. The raw key is only shown once.
Query Parameters
namestringLabel for this key (required)Response
{ "data": { "id": "uuid", "name": "my-agent", "key_prefix": "dl_a1b2c3d4", "key": "dl_a1b2c3d4e5f6..." } }/api/keys/:id/rotateRotate an API key — generates a new secret while keeping the same ID. All usage stats are preserved.
Response
{ "data": { "id": "uuid", "name": "my-agent", "key_prefix": "dl_e7f8g9h0", "key": "dl_e7f8g9h0i1j2..." } }/api/keys/statsYour API usage stats — overview, per-key breakdown, top endpoints (30d).
Query Parameters
daysnumberLookback period (default: 30)Response
{ "data": { "overview": { "total_calls": 450, "avg_ms": 12, "keys_count": 2 }, "by_key": [...], "by_endpoint": [...] } }/api/keys/:idRevoke an API key. Cannot be undone.
Response
{ "data": { "revoked": true } }Admin Endpoints
Require session cookie from a user with role=admin.
/api/admin/usersList all users with their roles and plans.
Response
{ "data": [{ "user_id": "...", "role": "admin", "plan": "unlimited", "email": "...", "name": "..." }] }/api/admin/users/:id/planSet a user's plan. Only admins can change plans.
Query Parameters
planstringOne of: free, pro, unlimited (in JSON body)Response
{ "data": { "user_id": "...", "plan": "pro" } }Quick Start (for LLMs / Agents)
# 1. Sign in at /settings and create an API key # 2. Use the key in all requests: # Get today's summary (best for daily briefing) curl -H "Authorization: Bearer dl_YOUR_KEY" https://dulieu.dev/api/summary # Get exchange rates for a date range curl -H "Authorization: Bearer dl_YOUR_KEY" "https://dulieu.dev/api/exchange?from=2026-05-01&to=2026-05-20" # Or use query parameter curl "https://dulieu.dev/api/gold?date=2026-05-20&api_key=dl_YOUR_KEY" # Free plan: 100 calls/day. Upgrade to Pro for grocery data + higher limits.
DuLieu.dev API