list_licitacao_resultados
Retrieve winners, prices, and suppliers for a bidding item. Provide the item number to obtain results.
Instructions
List the bidding results (winners, runners-up, prices, suppliers) for a specific item of a licitação. You must specify which item — use list_licitacao_itens first to discover item numbers.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| numeroControlePNCP | No | ||
| orgaoCnpj | No | ||
| ano | No | ||
| sequencial | No | ||
| numeroItem | Yes | The item number (numeroItem) to retrieve results for. |
Implementation Reference
- src/adapters/pncp.ts:225-252 (helper)Adapter function listItemResultados that makes the actual HTTP GET request to PNCP API to fetch bidding results for a specific item, with caching and error handling.
export async function listItemResultados( orgaoCnpj: string, ano: number, sequencial: number, numeroItem: number, ): Promise<ResultadoItem[]> { const cacheKey = `list:resultados:${orgaoCnpj}:${ano}:${sequencial}:${numeroItem}`; const cached = cache.get<ResultadoItem[]>(cacheKey); if (cached) return cached; try { const { data } = await withRetry(() => pncpClient.get( `/orgaos/${orgaoCnpj}/compras/${ano}/${sequencial}/itens/${numeroItem}/resultados`, ), ); const arr = asArray(data); const parsed = ResultadoItemSchema.array().parse(arr); cache.set(cacheKey, parsed, TTL_30_MIN); return parsed; } catch (err) { if (err instanceof AxiosError) { if (err.response?.status === 404) return []; throw new PncpError(describeAxiosError(err), err); } throw err; } } - src/schemas/pncp.ts:106-127 (schema)ResultadoItemSchema — Zod schema defining the shape of each bidding result object (supplier info, prices, status, etc.).
export const ResultadoItemSchema = z .object({ numeroItem: z.number().optional(), numeroResultado: z.number().optional(), ordemClassificacaoSrp: z.number().nullable().optional(), niFornecedor: z.string().nullable().optional(), tipoPessoa: z.string().nullable().optional(), nomeRazaoSocialFornecedor: z.string().nullable().optional(), porteFornecedorId: z.number().nullable().optional(), porteFornecedorNome: z.string().nullable().optional(), situacaoCompraItemResultadoId: z.number().nullable().optional(), situacaoCompraItemResultadoNome: z.string().nullable().optional(), valorUnitario: z.number().nullable().optional(), valorTotal: z.number().nullable().optional(), percentualDesconto: z.number().nullable().optional(), marca: z.string().nullable().optional(), modelo: z.string().nullable().optional(), dataResultado: z.string().nullable().optional(), }) .passthrough(); export type ResultadoItem = z.infer<typeof ResultadoItemSchema>;