You are not logged in. Would you like to login or register?

4/21/2026 1:25 pm  #1


SiteScout

I miss the original SiteScout (lets you see how many permits are taken on a lake in the reservation website). I didn't want to provide my email just to download it so I just told AI to make a script to do the same job. 10 Seconds later, (plus an hour of debugging) I got the below script:

Works on Edge (and likely Chrome)
Uses: Tampermonkey Extension
Paste the below script into a new Tampermonkey Script and enjoy!

solos wrote:

// ==UserScript==
// @name         Ontario Parks – Show Hidden Permit Quotas (XHR final)
// @namespace    local.ontarioparks.quotas
// @version      3.0
// @description  Shows hidden remaining/total permit quotas per lake or zone
// @match        https://reservations.ontarioparks.ca/*
// @run-at       document-start
// @grant        none
// ==/UserScript==

(function () {
  const origOpen = XMLHttpRequest.prototype.open;
  const origSend = XMLHttpRequest.prototype.send;

  XMLHttpRequest.prototype.open = function (method, url) {
    this._isQuotaRequest =
      typeof url === "string" &&
      url.includes("/api/availability/resourcestatus");
    return origOpen.apply(this, arguments);
  };

  XMLHttpRequest.prototype.send = function () {
    if (this._isQuotaRequest) {
      this.addEventListener("readystatechange", () => {
        if (this.readyState === 4 && this.status === 200) {
          try {
            const data = JSON.parse(this.responseText);
            processQuota(data);
          } catch (e) {
            console.error("Quota JSON parse error", e);
          }
        }
      });
    }
    return origSend.apply(this, arguments);
  };

  function processQuota(data) {
    const remaining = data?.remainingReservableQuota;
    const total = data?.remainingTotalQuota;

    if (remaining == null || total == null) return;

    const label =
      data.resourceName ||
      data.displayName ||
      `Resource ${data.resourceId}`;

    console.log(
      "RESOURCSTATUS QUOTA:",
      label,
      remaining,
      "/",
      total
    );

    renderOverlay(`${label}\n${remaining} / ${total}`);
  }

  function renderOverlay(text) {
    let box = document.getElementById("quota-overlay");

    if (!box) {
      box = document.createElement("div");
      box.id = "quota-overlay";

      Object.assign(box.style, {
        position: "fixed",
        top: "12px",
        left: "12px",
        zIndex: 2147483647,
        background: "#000",
        color: "#00ff00",
        padding: "12px",
        fontFamily: "monospace",
        fontSize: "14px",
        border: "2px solid #00ff00",
        borderRadius: "6px",
        whiteSpace: "pre-line",
        boxShadow: "0 0 8px rgba(0,255,0,0.6)",
      });

      // Delay attach so Angular redraws don’t immediately remove it
      setTimeout(() => {
        if (!document.body.contains(box)) {
          document.body.appendChild(box);
        }
      }, 100);
    }

    box.textContent = text;
  }
})();

 

 

4/21/2026 1:34 pm  #2


Re: SiteScout

I appologize if this doesn't work out ot the box. This site aggreessively messes with your post spacing. Maybe I'll link to a pastebin

Untitled Page | JustPaste.app


 

Last edited by solos (4/21/2026 1:35 pm)

     Thread Starter
 

4/22/2026 7:23 am  #3


Re: SiteScout

Do you know if this will work for mobile? There is a tampermonkey app but its not free so I don't want to pay if it won't....but I'll pay and give it a try if you aren't sure.

 

4/22/2026 8:27 am  #4


Re: SiteScout

I am probably misunderstanding what is being discussed as I am an unabashed, card-carrying (see even the ID is an old school artifact) Luddite.
The Site Scout extension (or whatever it’s called) that sits in my Chrome on the pc stills works but doesn’t fire up and deliver the permit number results without two or three clicks on the icon by the address line prior to your drill down search.
Most of the planning I do is on the pc, so I can’t comment on mobile.

 

4/22/2026 10:35 am  #5


Re: SiteScout

I don't know about mobile but I'm sure if someone played with this, and uploaded it to AI and asked it to make it work on your device that it would bring you 90% or more to a working solution.

Mostly this is a proof of concept that it can easily be done by a non expert like myself.

I tested this on many lakes an it gives good results, but then I try it on Pen Lake and it shows 1/1 permits, which seems wring. Probably I need to troubleshoot more.

     Thread Starter
 

Board footera