{
  "openapi": "3.0.1",
  "info": {
    "title": "Vietnam Tenders & Contract Awards (muasamcong)",
    "description": "Tender notices and contract awards from Vietnam's national e-procurement portal (muasamcong.mpi.gov.vn) as English-keyed JSON: package, investor, VND prices, deadlines, provinces, winners and winning prices.",
    "version": "0.2",
    "x-build-id": "ySEDusPiyo5V0SoEC"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/a-g-d~vn-tenders/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-a-g-d-vn-tenders",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/acts/a-g-d~vn-tenders/runs": {
      "post": {
        "operationId": "runs-sync-a-g-d-vn-tenders",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor and returns information about the initiated run in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/runsResponseSchema"
                }
              }
            }
          }
        }
      }
    },
    "/acts/a-g-d~vn-tenders/run-sync": {
      "post": {
        "operationId": "run-sync-a-g-d-vn-tenders",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    }
  },
  "components": {
    "schemas": {
      "inputSchema": {
        "type": "object",
        "properties": {
          "recordType": {
            "title": "Record type",
            "enum": [
              "notices",
              "awards"
            ],
            "type": "string",
            "description": "Tender notices (the default) or contract awards: notices whose contractor-selection result (winner, winning price, or cancellation) has been published. For awards, \"Published since\" applies to the result's publication time and \"Open notices only\" is ignored. One run returns one record type.",
            "default": "notices"
          },
          "keyword": {
            "title": "Keyword",
            "type": "string",
            "description": "Matched by the portal against the notice number (e.g. IB2600537045) and the package name, for notices and awards alike. Vietnamese text works best, e.g. \"xây dựng\" or \"bệnh viện\". Leave empty for all records.",
            "default": ""
          },
          "investField": {
            "title": "Procurement field",
            "uniqueItems": true,
            "type": "array",
            "description": "Only records in these fields. Leave empty for all fields.",
            "items": {
              "type": "string",
              "enum": [
                "XL",
                "HH",
                "TV",
                "PTV",
                "HON_HOP"
              ],
              "enumTitles": [
                "Works / construction (XL)",
                "Goods (HH)",
                "Consulting (TV)",
                "Non-consulting services (PTV)",
                "Mixed (HON_HOP)"
              ]
            },
            "default": []
          },
          "province": {
            "title": "Province",
            "type": "string",
            "description": "Only records with a location in this province. Enter the portal province code (e.g. 79) or the name in Vietnamese or English, with or without diacritics (e.g. \"Ho Chi Minh\", \"Đà Nẵng\", \"Hai Phong City\"). Names match the current province and any pre-2025 province of the same name. Leave empty for the whole country.",
            "default": ""
          },
          "openOnly": {
            "title": "Open notices only",
            "type": "boolean",
            "description": "Notices only: keep notices whose bid closing time is still in the future. Ignored for awards.",
            "default": true
          },
          "publishedSince": {
            "title": "Published since",
            "type": "string",
            "description": "Only records published (or amended) after this point: a relative span like \"24 hours\", \"3 days\" or \"2 weeks\", a date like \"2026-09-20\" (midnight Vietnam time) or an ISO-8601 timestamp. Notices filter on the notice's publication time, awards on the result's. To list every open notice, use a long span such as \"365 days\".",
            "default": "24 hours"
          },
          "maxItems": {
            "title": "Maximum items",
            "minimum": 1,
            "maximum": 10000,
            "type": "integer",
            "description": "Stop after storing this many notices or awards (newest first).",
            "default": 100
          },
          "includeDetail": {
            "title": "Include details",
            "type": "boolean",
            "description": "Also fetch each record's detail, one extra request per record, billed as a separate event. Notices: procuring entity, project and plan, capital source, contract type and period, bid guarantee, lots, attached file names (not available for open simplified online quotations, CGTTRG). Awards: result decision, contract type and period, per-lot bidders and winners, cancellation, file names.",
            "default": false
          },
          "proxyConfiguration": {
            "title": "Proxy",
            "type": "object",
            "description": "Optional. The portal sometimes resets connections from datacenter IPs; if runs fail with connection errors, try Apify Proxy (residential).",
            "default": {
              "useApifyProxy": false
            }
          }
        }
      },
      "runsResponseSchema": {
        "type": "object",
        "properties": {
          "data": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string"
              },
              "actId": {
                "type": "string"
              },
              "userId": {
                "type": "string"
              },
              "startedAt": {
                "type": "string",
                "format": "date-time",
                "example": "2025-01-08T00:00:00.000Z"
              },
              "finishedAt": {
                "type": "string",
                "format": "date-time",
                "example": "2025-01-08T00:00:00.000Z"
              },
              "status": {
                "type": "string",
                "example": "READY"
              },
              "meta": {
                "type": "object",
                "properties": {
                  "origin": {
                    "type": "string",
                    "example": "API"
                  },
                  "userAgent": {
                    "type": "string"
                  }
                }
              },
              "stats": {
                "type": "object",
                "properties": {
                  "inputBodyLen": {
                    "type": "integer",
                    "example": 2000
                  },
                  "rebootCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "restartCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "resurrectCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "computeUnits": {
                    "type": "integer",
                    "example": 0
                  }
                }
              },
              "options": {
                "type": "object",
                "properties": {
                  "build": {
                    "type": "string",
                    "example": "latest"
                  },
                  "timeoutSecs": {
                    "type": "integer",
                    "example": 300
                  },
                  "memoryMbytes": {
                    "type": "integer",
                    "example": 1024
                  },
                  "diskMbytes": {
                    "type": "integer",
                    "example": 2048
                  }
                }
              },
              "buildId": {
                "type": "string"
              },
              "defaultKeyValueStoreId": {
                "type": "string"
              },
              "defaultDatasetId": {
                "type": "string"
              },
              "defaultRequestQueueId": {
                "type": "string"
              },
              "buildNumber": {
                "type": "string",
                "example": "1.0.0"
              },
              "containerUrl": {
                "type": "string"
              },
              "usage": {
                "type": "object",
                "properties": {
                  "ACTOR_COMPUTE_UNITS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_WRITES": {
                    "type": "integer",
                    "example": 1
                  },
                  "KEY_VALUE_STORE_LISTS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_INTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_EXTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_SERPS": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_UNBLOCKER_UNITS": {
                    "type": "integer",
                    "example": 0
                  }
                }
              },
              "usageTotalUsd": {
                "type": "number",
                "example": 0.00005
              },
              "usageUsd": {
                "type": "object",
                "properties": {
                  "ACTOR_COMPUTE_UNITS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_WRITES": {
                    "type": "number",
                    "example": 0.00005
                  },
                  "KEY_VALUE_STORE_LISTS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_INTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_EXTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_SERPS": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_UNBLOCKER_UNITS": {
                    "type": "integer",
                    "example": 0
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}