top of page

How to scrape logistics and supply chain data from Indonetwork using the Minexa API

Indonetwork is one of Indonesia's largest B2B directories, listing thousands of verified companies across industries including cargo, freight forwarding, customs brokerage, and domestic logistics. The cargo and logistics section alone contains hundreds of active company profiles, each with addresses, service descriptions, contact data, and membership tier information.

If you are building a supplier database, researching logistics partners across Indonesian cities, or monitoring the directory for new entrants, the Minexa API gives you a repeatable extraction pipeline without maintaining any scraping infrastructure yourself.

The workflow has two phases: train the scraper once using the Minexa Chrome extension, then call the API programmatically to pull data at scale.

Step 1: Open Minexa and navigate to Indonetwork

Start from the Minexa home page after installing the Chrome extension. You will see the extension interface ready to detect any page you navigate to.

Navigate to the Indonetwork cargo and logistics directory at indonetwork.co.id/k/kargo-dan-logistik/perusahaan. The page loads a paginated list of company cards, each showing a company name, address, short description, and membership badge.

Step 2: Confirm the page and review pagination

Once the extension detects the page, click the confirmation button to tell Minexa you are on the correct page to scrape.

Minexa then shows you the pagination it detected. Review the next page button configuration and click Continue to proceed. Note that when using the API later, you will need to supply a JS code scenario to handle pagination yourself rather than relying on automatic handling.

Step 3: Choose scraping scope and mode

You can scrape the list only, or follow each company link to extract the full detail page as well. For building a logistics partner database, scraping list plus detail pages gives you the most complete dataset per company.

Select simple scraping mode for a standard extraction, or advanced mode if your workflow requires custom click sequences before data loads.

Step 4: Highlight the container and create the scraper

Minexa automatically highlights the repeating data container across all company cards on the page. Confirm the selection and click to create the scraper.

After creation, all extracted data points are visible with next and previous navigation to review each column before running the job.

Step 5: Get the API request and scraper ID

Click the API request option to see the generated JSON and Python code samples. This is where you get your scraper ID, which is the stable identifier you will use in every API call going forward.

Here is a ready-to-run Python example using the Minexa API:

import requests

url = 'https://api.minexa.ai/data'
headers = {'Content-Type': 'application/json', 'x-api-key': 'YOUR_API_KEY'}
payload = {
  'scraper_id': 6120,
  'columns': 'top_40',
  'urls': ['https://www.indonetwork.co.id/k/kargo-dan-logistik/perusahaan'],
  'scraping': {'js_render': True, 'proxy': True}
}
response = requests.post(url, json=payload, headers=headers)
print(response.json())

You can batch multiple page URLs in a single request to extract across several directory pages in parallel using the threads parameter to control concurrency.

What the extracted data looks like

Each row in the output corresponds to one company listing. Here are two example records from the Indonetwork logistics directory:

[
  {
    "company_name": "Levy Bintang Logistik",
    "address": "Jl. Tongkol No. 2 RT 08, RW 04, Ancol, Jakarta Utara",
    "company_description": "Levy Bintang Logistik merupakan jasa ekspedisi door to door Jabodetabek...",
    "company_link": "/company/levy-logistik",
    "membership_badge_class": "membership-badge align-self-center align-middle ruby",
    "years_joined": "Telah bergabung selama 1 Tahun",
    "row_class": "row box-shadow box-ruby mb-3"
  },
  {
    "company_name": "PT. Pratama Logistic System",
    "address": "JL IKAN DORANG NO 18 SURABAYA-JAWA TIMUR 60177",
    "company_description": "PPJK SURABAYA - CUSTOMS BROKER SURABAYA - EXPORT IMPORT CLEARANCE...",
    "company_link": "/company/emkl-pratama",
    "membership_badge_class": "membership-badge align-self-center align-middle gold",
    "years_joined": "Telah bergabung selama 16 Tahun",
    "row_class": "row box-shadow box-gold mb-3"
  }
]

The membership_badge_class field encodes the membership tier directly in the DOM class string. Values like ruby, gold, and blue-onyx let you filter or segment companies by verification level without any post-processing. The row_class field mirrors this at the card level, so you can use either field to distinguish tiers in your pipeline.

The encoded_data_text_button fields contain Base64-encoded contact identifiers per listing. These are the values the Indonetwork platform uses to surface phone and WhatsApp contact details when a user clicks the contact button on each card.

Running the job and exporting results

Once the job completes, results are available as a structured table. Export to Excel or JSON depending on your downstream workflow.

Because the scraper ID is stable, you can call the same endpoint repeatedly with different page URLs as new companies are listed on Indonetwork. Set up your own cron job to trigger the API on a schedule that fits your monitoring cadence.

For a related example of extracting B2B company data via the Minexa API, see the post on how to scrape real estate data from Kleinanzeigen using the Minexa API.

Recent Posts

See All

Comments


Heading 2

bottom of page