Filtering by verify status on Trang Vàng saves half the requests
Building a B2B supplier dataset in Southeast Asia requires navigating regional directories that mix active manufacturers with closed or outdated entities. Trang Vàng Việt Nam (Yellow Pages Vietnam) hosts over 250,000 bus
Building a B2B supplier dataset in Southeast Asia requires navigating regional directories that mix active manufacturers with closed or outdated entities. Trang Vàng Việt Nam (Yellow Pages Vietnam) hosts over 250,000 businesses across 3,400 industry categories and 63 provinces, making it the primary repository for local trade data. However, pulling raw search listings directly into a pipeline often leads to incomplete schema issues—such as missing tax IDs, absent contact details, or stale records flagged by the directory itself.
To build structured lead lists efficiently, you need to understand how the directory structures its payload types and how selecting specific operational modes impacts record enrichment and processing runtime.
Understanding directory structure and output payloads
The directory provides two levels of data: standard listing summary cards and enriched profile pages. Basic search and category views return high-level metadata (such as businessName, address, province, phone, website, isSponsored, and listingId).
Accessing structural operational data—including taxId, foundingYear, employeeRange, businessType, contactPersonName, and full catalog arrays in products[]—requires requesting each business's individual profile page.
When using the Vietnam Business Directory Scraper, set fetchFullProfile: true to trigger an additional HTTP fetch for each listing in the search results. Empty fields are omitted entirely from the output dataset rather than being populated with null or blank placeholder strings.
{
"mode": "search",
"searchQuery": "công ty may mặc",
"province": "Hà Nội",
"fetchFullProfile": true,
"maxItems": 50
}
If your pipeline only requires baseline validation—such as verifying whether a vendor exists and has an active website or hotline—leaving fetchFullProfile set to false yields faster processing runtimes. If your downstream application requires precise legal entity verification using taxId or corporate capacity checks via employeeRange, turning on enrichment is mandatory.
Filtering outdated listings before pipeline ingestion
Data freshness varies considerably across directory platforms. Trang Vàng Việt Nam uses two explicit flags to indicate listing status:
-
Verified listings (
isVerified): Denotes entities that have confirmed their tax identity and business registration directly with the directory platform (indicated by the site's "Xác thực" badge). -
Outdated listings (
isOutdated): Denotes listings marked by the site itself with the notice "Thông tin này đã không còn chính xác" (information no longer accurate).
Filtering after the run means you process and write payloads that you immediately discard. By leveraging server-side input parameters, you can clean the stream at the source.
{
"mode": "byCategory",
"categoryUrl": "https://trangvangvietnam.com/categories/152060/co-khi--gia-cong-va-che-tao.html",
"verifiedOnly": true,
"excludeOutdated": true,
"maxItems": 100
}
Setting excludeOutdated: true drops invalid listings before full profile enrichment occurs. Setting verifiedOnly: true keeps only self-confirmed entities. Combining these two parameters ensures every record emitted into the dataset contains active contact information and valid registration metadata.
Four extraction modes for targeted data collection
The scraper provides four distinct execution pathways based on how you target listings:
1. search mode
Requires searchQuery (a keyword such as an industry name, product, or company title). You can supply an optional province string to filter by one of the 63 Vietnamese administrative divisions (e.g., "Hà Nội", "Tp. Hồ Chí Minh", "Bình Dương").
2. byCategory mode
Requires categoryUrl, which points to a specific index link on the directory (sourced via the site's A–Z industry listing at trangvangvietnam.com/findex). This mode bypasses keyword search relevance algorithms to systematically evaluate an entire industry vertical.
3. byProvince mode
Requires province (e.g., "Tp. Đà Nẵng"). It returns every listed business in that geographical territory without requiring a keyword query.
4. byListingUrls mode
Takes an array of specific profile URLs in listingUrls. This mode ignores search terms and directly executes full profile parsing for known URL targets.
{
"mode": "byListingUrls",
"listingUrls": [
"https://trangvangvietnam.com/listings/1187701125/prosteel-techno-viet-nam-cong-ty-tnhh-prosteel-techno-viet-nam.html"
]
}
Step-by-step implementation guide
Here is how to set up an extraction task targeting verified manufacturing suppliers in a specific province:
-
Define the target strategy: Determine if you are searching by generic term (
search) or extracting a whole region (byProvince). For broad vertical analysis, opentrangvangvietnam.com/findexin your browser, copy your target category's canonical web address, and usebyCategory. - Construct the JSON configuration payload: Set your execution parameters, enabling pre-filters to exclude stale listings.
-
Configure output capping: Set
maxItemsto restrict dataset growth to your target range (between 1 and 500 records per execution run). - Execute the run and collect output: Execute the actor using your preferred integration route (API, client library, or web interface).
A typical configuration for fetching targeted machine-manufacturing records looks like this:
{
"mode": "search",
"searchQuery": "chế tạo máy",
"province": "Bình Dương",
"fetchFullProfile": true,
"verifiedOnly": true,
"excludeOutdated": true,
"maxItems": 100
}
Platform event costs
Runs on the Apify platform operate under a pay-per-event pricing model. The exact charged events for this scraper are:
-
Actor Start (
apify-actor-start): $0.005 per GB of memory allocated to the run, charged once when the run initiates. -
Dataset Item (
apify-default-dataset-item): $0.005 per result emitted to the default dataset at the default FREE tier rate. Tiered volume pricing applies at higher usage brackets ($0.00433 BRONZE, $0.00367 SILVER, and $0.003 GOLD, PLATINUM, or DIAMOND).
Because charges apply per result record emitted, using parameters like excludeOutdated: true and verifiedOnly: true avoids generating paid dataset events for unverified or obsolete records.
Limitations and operational boundaries
While this approach efficiently processes directory structures across Vietnam's 63 provinces, it does not bypass or solve external direct-contact verification; if a business listed in the directory chose not to disclose an email or phone number in their original registration, those specific fields will remain omitted in the output JSON.
Vietnam Business Directory Scraper is what these steps drive. The README covers the inputs this article skipped, including the ones that change how much a run costs.
Prices quoted above are this Actor's published pay-per-event rates on the Apify Store, read from the Apify platform API on 2026-09-19. Check the Actor page for the current rates.
Originally published by Dev.to WebDev. Aggregated on AIWithGhost for educational purposes — full credit and traffic to the original publisher.