SLED Bids avatar

SLED Bids

Pricing

from $3.00 / 1,000 results

Go to Apify Store
SLED Bids

SLED Bids

Returns open state, local and education government solicitations from public US procurement portals (Florida, Louisiana, Delaware), fetched logged out, with no contact officer data.

Pricing

from $3.00 / 1,000 results

Rating

0.0

(0)

Developer

Sub Rosa

Sub Rosa

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

14 hours ago

Last modified

Categories

Share

Returns open solicitations from three public US government procurement portals, one state each: Florida's Vendor Bid System on MyFloridaMarketPlace (state agencies, water management districts and a few special districts), the Louisiana Procurement and Contract Network, LaPAC (the central Office of State Procurement, state departments, universities, community and technical colleges, parishes, cities, school boards and authorities), and Delaware's Bid Solicitation Directory (state departments, school districts, the state university and community college, the National Guard). Each item carries the portal, the contracting organization, the state, the title, the agency's own solicitation number, the portal's classification of the posting, the posted and closing dates (with UTC timestamps where the portal gives a time), a status, a short description where the portal publishes one, and a link to the solicitation documents. The data comes from the portals' public listing pages and the JSON endpoints those pages call, fetched logged out, as they stand at the moment of the run. A default run returns 150 items in about 65 seconds across 56 requests. The result price is $0.003 per item, with a $0.02 charge per run.

No contact officer's name, email address or phone number is collected. Florida's detail record carries a response contact block (name, address, phone, email) and Delaware's list carries a contact email for every bid; both are read and dropped before output, and the README's Legal section says exactly what is dropped where. The Florida description passes through the house free-text filter sentence by sentence; it is a filter, not a guarantee, and the Limits section says what it catches.

Who uses it

  • A sales team at a contractor or software vendor tracking public-sector opportunities in the Southeast: runs the default input each morning, keeps state, agencyName, title, category, closesDate and url, and flags new postings in its categories before the response window narrows.
  • A bid-matching service or procurement data product: pulls all three portals with a large maxItems, keys on id to detect new and disappeared postings run over run, and uses documentsUrl to fetch the solicitation documents for the ones its customers follow.
  • A researcher studying procurement lead times: uses postedDate and closesDate (and postedAt, closesAt where the portal gives times) across portal and agencyName to compare how long agencies leave solicitations open, without touching any officer's identity.

Sample output

One real item from a real run, as JSON:

{
"id": "florida-vbs:14026",
"url": "https://vendor.myfloridamarketplace.com/search/bids/detail/14026",
"sourceUrl": "https://vendor.myfloridamarketplace.com/mfmp/pub/search/bids/detail?id=14026",
"scrapedAt": "2026-09-26T12:56:27.107Z",
"portal": "florida-vbs",
"agencyName": "Florida Department of Corrections (FDC)",
"state": "FL",
"title": "Statewide Roof Maintenance, Repair, and Replacement Services",
"solicitationNumber": "ITB-25-007",
"category": "Invitation to Bid",
"postedAt": "2025-10-02T19:45:18.000Z",
"postedDate": "2025-10-02",
"closesAt": "2026-12-31T22:00:00.000Z",
"closesDate": "2026-12-31",
"status": "open",
"description": "Addendum #004, which revises the Timeline, is attached. Addendum #003, which includes the Department's written answers to the written questions received by the deadline in the ITB Timeline, is attached.",
"documentsUrl": "https://vendor.myfloridamarketplace.com/mfmp/bids/detail/attachment/download?attachmentId=33279"
}

Ten items from the same run, covering all three portals, a Florida grant opportunity and agency decision, a cancelled Louisiana bid, and Delaware school district and transportation bids, are in sample.json.

Data dictionary

Every field is present on every item. Fields the portal does not publish are null, never missing and never an empty string.

FieldTypeMeaningExample
idstringPortal key and the portal's own record id, joined by a colon, unique across portals"louisiana-lapac:3000026521"
urlstringCanonical public page for the solicitation on its portal"https://mmp.delaware.gov/Bids/Details/9349"
sourceUrlstringPage or endpoint the record was extracted from"https://wwwcfprd.doa.louisiana.gov/osp/lapac/dspBid.cfm?search=department&term=1"
scrapedAtstringExtraction time, ISO 8601, UTC"2026-09-26T12:03:19.716Z"
portalstringflorida-vbs, louisiana-lapac or delaware-bids"delaware-bids"
agencyNamestring or nullThe contracting organization as the portal names it. Florida gives the agency's full name; Louisiana groups departments as State, University, Community/Technical College and Non State and this Actor drops the group label and keeps the entity; Delaware gives an acronym which is resolved to the agency's name from the portal's own agency list. Never a person"City of New Orleans"
statestringTwo-letter state code of the portal: FL, LA or DE"LA"
titlestring or nullSolicitation title as the agency wrote it, bid numbers included (Bid No. 3000026521 Diamond Mowers keeps its number); null when the title carries an email address or a phone-shaped number (a bid number beside a year can read as one; then the number, which is already in solicitationNumber, is removed and the rest of the title kept)"RFP for Statewide Student Assessments for LDOE"
solicitationNumberstring or nullThe agency's own solicitation number (advertisement, bid or contract number) as printed on the portal; an identifier, so it may be all digits"OMB-MC3804000164"
categorystring or nullThe portal's classification: Florida's advertisement type (Invitation to Bid, Request for Proposals, Invitation to Negotiate, Request for Quote, Agency Decision, Grant Opportunities, Informational Notice and others), Delaware's UNSPSC family codes as listed, null for Louisiana whose department pages carry no category"UNSPSC 7215"
postedAtstring or nullWhen the posting was published, ISO 8601, UTC. Florida publishes a time; Louisiana and Delaware publish a date only, so it is null there"2026-09-24T19:01:41.000Z"
postedDatestring or nullDate the posting was published, YYYY-MM-DD, as the portal shows it"2026-09-24"
closesAtstring or nullResponse deadline or bid opening, ISO 8601, UTC. Florida publishes UTC; Louisiana publishes Central Time, converted here; Delaware's list gives a date only, so it is null there; null for a cancelled bid"2026-11-10T16:00:00.000Z"
closesDatestring or nullResponse deadline or bid opening date, YYYY-MM-DD, as the portal shows it; null for a cancelled bid"2026-11-10"
statusstringAlways present: open, or cancelled for a Louisiana bid the portal still lists with a cancellation notice. Every portal is read for open postings, so a record without a status field is open"open"
descriptionstring or nullThe opening two sentences of the agency's own text, Florida only, after every sentence carrying an email address, a phone-shaped number, an honorific, a role followed by a name, a licence number or a health detail is dropped whole, cut to 500 characters; null for the other portals, which publish no description on the pages read, and when nothing remains"The Florida Department of Agriculture and Consumer Services ... seeks competitive bids."
documentsUrlstring or nullWhere the documents are: Florida's first attachment download, Louisiana's original bid document, Delaware's document list for the bid (the same list its detail page loads); null when the portal lists none"https://wwwcfprd.doa.louisiana.gov/osp/lapac/agency/pdf/9067600.pdf"

Input

FieldTypeDefaultMeaning
sourcesarray of stringsall threeAny of florida-vbs, louisiana-lapac, delaware-bids. maxItems is split evenly across the portals you choose, so a default run asks for 50 from each; a portal that lists fewer than its share (Delaware, at about 45 open bids) gives what it has and the others fill the rest.
statesarray of stringsempty, meaning allTwo-letter codes. Each portal covers one state, so ["FL", "DE"] keeps those two portals. A code no portal covers is logged and ignored; if nothing is left the run fails with a clear message.
querystringemptyKeep only solicitations whose title, solicitationNumber or agencyName contains this text, case-insensitive. It is a filter applied after fetching, not a portal search, so a narrow query returns fewer items, not a longer crawl.
maxItemsinteger150Stop after this many items. The three portals together list roughly 300 to 350 open postings at a time (Florida about 170, Louisiana about 120, Delaware about 45), so a run asking for more than that stops when the pages run out and says so in the log.
proxyConfigurationobjectApify datacenter proxyStandard Apify proxy settings. Datacenter proxies are sufficient. Running locally without an Apify login, set it to { "useApifyProxy": false }.

Pricing

Pay per event, two events. actor-start: $0.02, once per run, covers the fixed overhead of starting and reading the three portals' index pages. result: $0.003 per item, that is $3 per 1,000 items. Items are pushed and charged in the same step, so a run never delivers more items than it charges for, and a run stops cleanly when your maximum charge is reached. A default run of 150 items costs $0.47.

Measured platform cost: the default run makes 56 requests (two Florida list pages and 50 detail records, the Louisiana department index and one or two department pages, the Delaware agency list and one bid list), transfers about half a megabyte, and the crawler runs for about 65 seconds. At Apify's list prices ($0.40 per compute unit at 1 GB of memory, $0.20 per GB of transfer) that is about $0.007 per run, or about $0.05 per 1,000 items; larger runs cost a little more per item because every Florida item is one detail request. The $3 price is therefore roughly 60 times the platform cost, above the house floor of three times.

Free allowance: Apify's free plan carries $5 of usage a month. At these prices that covers 10 default runs of 150 items ($0.47 each, $4.70 in all), or about 1,600 items across fewer, larger runs, before a paid plan is needed.

Limits and honesty

  • Three states. This Actor reads the portals that passed the house's intake gate on 2026-09-26: public listing visible logged out, robots.txt permitting the paths used, no published terms forbidding storage or redistribution, and no challenge to a plain HTTP request. Bonfire portals (robots.txt disallows everything), DemandStar (open bids are behind registration; only recently awarded bids are public), BidNet Direct (an AWS WAF JavaScript challenge answers a plain request), Texas SmartBuy (robots.txt disallows everything), Cal eProcure (a 403 to any non-browser identity) and Georgia's GPR (redirects a non-browser identity to an unsupported-browser page) did not pass and are not read. More portals will be added as they pass the same gate.
  • Postings, not only bids. Florida's Vendor Bid System lists everything an agency posts, including agency decisions (intent to award), single-source notices, grant opportunities and informational notices, and this Actor returns what the portal lists as open; category tells them apart. Louisiana keeps a cancelled bid on its open list with a cancellation notice for a while; it is returned with status cancelled and no closing date.
  • Even split, largest first. maxItems is shared evenly across the portals. Louisiana's department pages are read one at a time in order of how many open bids they hold, so a default run's Louisiana share comes mostly from the central Office of State Procurement (about 70 bids) and the parish and city pages are reached only by a larger maxItems or a Louisiana-only run. Florida list records beyond the share are held and fetched only when another portal came up short, in a second pass that starts after a one-minute pause so the whole run stays under 30 requests a minute.
  • Dates. Florida publishes UTC timestamps; Louisiana publishes a date and a Central Time clock time, converted to UTC here; Delaware's list publishes dates only (its detail page shows a local time this Actor does not fetch). The ...Date fields carry what every portal shows; the ...At fields carry a UTC timestamp only where a portal gives a time, and are null otherwise rather than an invented midnight.
  • Description is Florida only, and short. It is the opening two sentences of the agency's own text, kept whole with the numbers the agency wrote (addendum numbers, bid numbers, attachment ids), after every sentence that carries contact or person data is dropped whole. The house filter (stripContactProse, shared by every Actor) drops a sentence with an email address, a phone-shaped number, an honorific, a role word followed by a name, a licence number or a health word; this Actor adds three rules for what these portals' addenda write and the shared filter lets through: an honorific followed by a name ("Purchasing Director, Mr. [name]"), a job title, a connective and a name ("changing procurement manager from [name] to [name]", "PROJECT MANAGER : [name]"), and a name followed by a job title ("submitted to [name], Contracts Specialist"). On 2026-09-26 the filter was read against every open Florida posting (168 records, 1,571 sentences): 66 sentences carried an email address or a phone-shaped number, 23 more named an officer without either, and 14 were dropped by the shared filter's licence and health rules on tender wording ("license certification", "qualified disability", a grant's programme name) rather than on a person; every other sentence stayed, and every record kept a description. Those 14 are the house rule applied as written, and the description then starts at the next clean sentence. This is a filter, not a guarantee. The extractor cannot recognise every personal name in prose; a name that gets through is a bug, and reporting it on the Issues tab gets it stripped the same day. Louisiana's department pages and Delaware's bid list publish no description text (Delaware's ContractMessage is empty on every open bid), so description is null there at the source.
  • Not collected, on purpose: Florida's response contact block (name, address, phone, email) and its favorite, submitted, intendToParticipate and audit flags; Delaware's ContactEmail; Louisiana's "Help" contact codes and the contact pop-up they open; commodity code lists; attachment lists beyond the first document; Delaware's detail message and document list (one more request per bid, not made).
  • The portals change. Florida's search API and Delaware's grid endpoint are the ones their own pages call; Louisiana's pages are plain ColdFusion HTML. When any of them changes, the daily test fails, the house status page shows this Actor as under maintenance, a fix ships, and the changelog records it.

Florida. The Vendor Bid System at vendor.myfloridamarketplace.com has no robots.txt (a 404, checked 2026-09-26), so no path is disallowed; this Actor reads the public search endpoint /mfmp/pub/search/bids and the public detail endpoint /mfmp/pub/search/bids/detail, which the portal's own logged-out search page calls. The MyFloridaMarketPlace Terms of Use (PUR 3775, July 2022, https://dms-media.ccplatform.net/content/download/156614/file/MFMP%20Terms%20of%20Use_7.2022.pdf) are presented to a Vendor at registration ("When presented with the Terms of Use at Vendor registration, you, the Vendor, will be given an opportunity to click 'I Accept'") and say at section 5, Ownership: "The State and its Service Provider also grant you a non-exclusive, non-transferable license to print and download content on MFMP solely for your non-commercial use, provided that you maintain the copyright notice and any other notices that appear on any such copies." They say nothing about automated access. The house holds no MyFloridaMarketPlace account, has never registered as a Vendor, and never logs in, so it has not entered those terms. The solicitations themselves are published by statute: section 287.042(3)(b)2, Florida Statutes, requires the department to "designate a centralized website on the Internet for the department and other agencies to electronically post solicitations, decisions or intended decisions, and other matters relating to procurement", and these postings are public records under chapter 119.

Louisiana. LaPAC's robots.txt (https://wwwcfprd.doa.louisiana.gov/robots.txt, checked 2026-09-26) disallows only /checkbook/stateEmployees/; the /osp/lapac/ pages this Actor reads (deptbids.cfm and dspBid.cfm) are allowed. The Division of Administration publishes a privacy policy (https://www.doa.la.gov/privacy-policy/) that "applies solely to the direct use of doa.louisiana.gov" and says nothing about automated access or reuse; LaPAC itself publishes no terms of use. The postings are required by statute: La. R.S. 39:1594(C)(5) says "All bids shall be advertised by a using agency through a centralized electronic interactive environment administered by the division of administration", and LaPAC is that environment.

Delaware. The Bid Solicitation Directory at mmp.delaware.gov answers /robots.txt with a redirect to its home page (checked 2026-09-26), so there is no robots file and no path is disallowed; this Actor reads /Agency/Index and the /Bids/GetBids endpoint the directory's own grid calls. The directory's Privacy link points to Government Support Services' policy (the link's path answers 404; the page is at https://gss.omb.delaware.gov/privacy.shtml, "GSS Privacy Policy and Disclaimer", read 2026-09-26), which says "Any copies of these documents that you make must retain all copyright and other proprietary notices as contained herein" and "The use and display of any photographs or any copies of documents that you make must retain all copyright and other proprietary notices as contained herein and is covered under the Federal Copyright laws and may ne used only with the express written permission of the State of Delaware as authorized by the Office of Management and Budget, Government Support Services' Director or designee" (sic); it says nothing about automated access. This Actor copies no document and no photograph: it records the index entries (title, number, agency, dates, UNSPSC codes) and links to the documents where they sit. The directory describes itself as "the State of Delaware's central repository for all open solicitations", and 29 Del. C. § 6923(b)(1) requires that "Public advertising shall require electronic publication accessible to the public".

The house. On every portal this Actor fetches only logged-out public pages and the JSON endpoints those pages call, at most 30 requests a minute and two at a time, under the declared identity SubRosaBot/1.0 (SubRosaBot/1.0 (+https://subrosa.dev/bots) in full), with header generation off, no session pool and no cookies kept. None of the three portals states a Crawl-delay (Florida and Delaware publish no robots.txt; Louisiana's sets none, checked 2026-09-26), so the same-domain delay is set to 0 explicitly and the rate limit above is the whole of the politeness. It never impersonates a browser; the portals that answer a declared bot with a challenge or a block were left out rather than fought. If any of the three asks the house to stop, in any form, the Actor is unpublished the same day and the changelog says why.

Personal data. Under the house ruling on government records (2026-09-26), a public tender names an agency and a place because the record is about them, and those stay; every person named on it goes at the schema level. Florida's detail record carries a responseContact block with the officer's name, street address, phone and email: dropped. Delaware's list carries ContactEmail for every bid: dropped. Louisiana's list carries a "Help" code that opens a contact pop-up: not fetched. A title that carries an email address or a phone-shaped number is withheld whole (phone detection is by shape, never by digit count, so bid numbers written into titles stay; where a bid number beside a year reads as a phone shape, the number is removed from the title and the rest kept, since the number is already in solicitationNumber); the Florida description is limited to two sentences with every sentence carrying contact or person data dropped whole, as the Limits section describes. The only names returned are organizations: departments, universities, colleges, districts, parishes, cities, authorities, and, inside a Florida agency decision's text, the company being awarded.

You. A buyer who holds an account at any of these portals is bound by the terms they accepted there, including the MyFloridaMarketPlace non-commercial license quoted above, and is responsible for whether and how they use this data. You are responsible for your downstream use of the output and for the law that applies to you.

Changelog

  • 2026-09-26: after review. solicitationId renamed solicitationNumber and declared an identifier in the dataset schema; the title and description filters replaced with the house stripContactProse and phone-by-shape rules, so bid numbers in titles and addendum numbers in descriptions survive; three targeted officer-line rules added; status always derived; sameDomainDelaySecs 0 stated; test fixtures use invented names, 555 numbers and example.com only.
  • 2026-09-26: first release. Florida Vendor Bid System, Louisiana LaPAC and Delaware Bid Solicitation Directory.

Support

Open an issue on the Actor's Issues tab. Replies within one day.