Jordan JONEPS Tenders Scraper | Government Tenders
Pricing
from $2.00 / 1,000 tenders
Jordan JONEPS Tenders Scraper | Government Tenders
Scrape Jordan government tenders from JONEPS by keyword, type, status, closing date or tender number. One row per invitation with Arabic title, procuring entity, publication and closing dates, stage and document links; English title when published. Daily new-only feed.
Pricing
from $2.00 / 1,000 tenders
Rating
0.0
(0)
Developer
Philip Kirkbride
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
18 hours ago
Last modified
Categories
Features
Share
Jordan JONEPS Tenders Scraper
Jordan government tenders from JONEPS (www.joneps.gov.jo), the national e-procurement platform. Get one clean row per tender invitation: tender number, Arabic title, procuring entity, type, status, publication and closing dates, the public tender page and the attached documents. With details on, rows also carry the English title when JONEPS publishes one, the description, tender stage, sub-type, procurement method, and question and opening dates.
Use it for tender monitoring and alerts: schedule a daily run with a keyword, tender type, status or date window and send new tenders to email, Slack or a spreadsheet.
Use cases
- Watch new Jordanian government tenders by keyword, entity, type or closing date.
- Build a daily or weekly feed of invitations before their offer deadline.
- Follow a single tender number through its published stages.
- Keep the official tender documents together with each opportunity.
Use it as a daily feed
Turn on Only new or changed since the last run (onlyNewSinceLastRun) and run the
Actor on a schedule with the same input. It then returns only tenders this search has not
delivered before, or whose watched fields changed since the last run, so there is nothing
to deduplicate on your side.
- Every returned row carries
changeType(neworchanged) andchangedFields. - The first run has no saved history, so it returns everything and reports
feed.firstRunin the run's OUTPUT. - The history lives in the named key-value store
jordan-joneps-tenders-scraper-feed-state, one record per search. LeavestateKeyempty to name the record from the input, so different searches keep separate histories; set a name to share one or to start a fresh feed. - An entry leaves the history once its deadline is more than 90 days past and it has not been delivered in the last 90 days, so the history stays bounded.
- The watched fields are the title, the closing date, the status, the estimated value and the documents.
With the flag off (the default) the Actor returns every match, exactly as before.
What it returns
Every row has tenderNumber (e.g. 2026004468-00), tendNo, tendSeq, title, titleEnglish, description, procuringEntity, procuringEntityCode, publishedAt, closingAt, questionsDeadline, openingAt, status, stage, tenderType, tenderSubType, procurementMethod, estimatedValue, currency, documents, url, detailIssue, sourceQuery, source and scrapedAt.
titleand other Arabic text are exactly as published.titleEnglishis filled only when JONEPS publishes a different English value.- Dates and times are ISO 8601 with the Jordan offset (
+03:00). A list-only run can carry a date without a time when JONEPS prints only a date. documentsis a list of{name, url}with the public JONEPS download link, or[]when a tender has no attachment. It isnullwhen details were not read.estimatedValueandcurrencyare reserved and always null: estimated contract values are not included. A document copy price is not a contract estimate.- If one tender's details cannot be read, the row is still delivered with
detailIssueexplaining what was missing. - Rows are deduplicated on
tenderNumber.
Input
| Field | Type | Default | What it does |
|---|---|---|---|
keyword | string | "" | Text searched in the tender name, e.g. صيانة. Up to 200 characters. |
tenderNumber | string | "" | One tender root number, e.g. 2026004468. |
tenderType | string | any | goods, services, technicalServices, works or medicines. |
status | string | any | reoffered, technicalResults or cancelled. |
publishedFrom, publishedTo | string | "" | Publication date window, YYYY-MM-DD. |
closingFrom, closingTo | string | "" | Offer deadline window, YYYY-MM-DD. |
maxItems | integer | 20 | Maximum tenders returned, newest first. |
includeDetails | boolean | true | Read each tender's information and document list. Slower. |
onlyNewSinceLastRun | boolean | false | Return only tenders this search has not delivered before, or whose watched fields changed since the last run. |
stateKey | string | "" | Optional name for the saved feed state; leave empty to derive it from the input. |
All filters are optional and can be combined. An empty input returns the latest invitations, newest first.
Example queries
Run with {} to get the latest 20 invitations with their details — the Console
default. That run costs about $0.045 and takes about a minute.
Open works tenders closing in the next month:
{"tenderType": "works","closingFrom": "2026-11-05","closingTo": "2026-12-05","maxItems": 20}
Maintenance tenders published this week, without the slower detail reads:
{"keyword": "صيانة","publishedFrom": "2026-10-30","publishedTo": "2026-11-05","includeDetails": false}
One tender by number:
{"tenderNumber": "2026004468"}
The 20-row default costs about $0.045 and the 100-row run about $0.205 — see Price.
Output example
{"tenderNumber":"2026004468-00","tendNo":"2026004468","tendSeq":"00","title":"شراء عقد الصيانة على الاجهزة الرئيسية العاملة في وزارة الداخلية","titleEnglish":null,"description":"شراء عقد الصيانة على الاجهزة الرئيسية العاملة في وزارة الداخلية","procuringEntity":"وزارة الداخلية","procuringEntityCode":"100100000","publishedAt":"2026-11-05T08:22:00+03:00","closingAt":"2026-11-11T12:00:00+03:00","questionsDeadline":"2026-11-04T10:00:00+03:00","openingAt":"2026-11-11T12:01:00+03:00","status":"نشر دعوة عطاء","stage":"دعوة عطاء","tenderType":"خدمات","tenderSubType":"خدمات صيانة","procurementMethod":"المناقصة العامة","estimatedValue":null,"currency":null,"documents":[{"name":"دعوة عطاء شراء عقد الصيانة على الاجهزة الرئيسية العاملة في وزارة الداخلية 2026.pdf (1686KB)","url":"https://www.joneps.gov.jo/um/attachment/fce6e247-0739-454a-a084-09b0fbebf820/download"}],"url":"https://www.joneps.gov.jo/ep/invt/ServiceDetails.do?tendNo=2026004468&tendSeq=00","detailIssue":null,"sourceQuery":"latest","source":"www.joneps.gov.jo","scrapedAt":"2026-11-05T06:58:07+00:00"}
Limits and caveats
- Runs with details take longer than list-only runs. For a large sweep, split by date or type.
- Estimated contract values are not included;
estimatedValueandcurrencyremain null. - The attached documents are public download links as published. Their stable address is the JONEPS link in each row.
- Filtered searches (keyword, type, status, date window or tender number) can reach JONEPS's archive back to 2018, not just the current invitation window. The list's status column can also show a stale workflow stage; with details on,
statusandstagecome from the tender's own information page. - If the source cannot be read, the run stops with a plain status message; rows already collected stay in the dataset.
- If nothing matches, the run succeeds with an empty dataset.
FAQ
How fresh is the data? Every run reads JONEPS live.
How do I get only new tenders each day? Schedule a daily run with publishedFrom set a day or two back and your other filters. Deduplicate across runs on tenderNumber.
Can I search in English? Tender names are written by the agencies, mostly in Arabic, so Arabic keywords match more tenders. An English title is delivered when the agency publishes one.
What happens when nothing matches? The run succeeds with 0 rows and a plain status message.
What if a detail page fails? The tender row is still delivered with detailIssue set.
What does a run cost? $0.002 for each delivered tender plus one run-start charge of $0.005 for the default 512 MB run. The 20-row default costs $0.045, 100 tenders cost $0.205 and 1,000 cost $2.005. Details are included in the same price; tenders that are not delivered are not charged.
Can I run it on a schedule? Yes. Save the input, add a schedule in the Apify Console — daily is usual for tender alerts — and choose where the results should go (email, webhook, Google Sheets or your own server). Turn on Only new or changed since the last run so the feed carries no duplicates.
How long does a run take? About a minute for the 20-row default with
details, because each tender needs its own pages. Turn includeDetails off for
a fast list-only sweep.
Price
You pay for what you get: $0.002 per delivered tender, plus a run-start charge of $0.005 per GB of memory — the default 512 MB run is one start charge, so $0.005.
| Run | Tenders | Cost |
|---|---|---|
| Console default (20 tenders, details on) | 20 | $0.045 |
| One type and a month of closing dates | 100 | $0.205 |
| Every invitation in the current window | 1,000 | $2.005 |
The start charge applies even when a run finds nothing, and tenders that are not delivered are not charged. Platform usage is included in the price.
Support
For questions or issues, contact us from the Actor page.