There is no way to find out if a page is accessible other than by accessing the page and catching the signal or exception the OS sends you for accessing an invalid page.
This is because the paging mechanism of your operating system traps page faults and then determines if there is supposed to be memory at this page. If yes, it allocates memory and configures the page table to point to that memory. Then it restarts your program which accesses the newly allocated page as if it was there all along. As the hardware doesn't know that this is what the OS plans to do, it cannot tell you if a page is valid or not, even if it had a way to do so.
Consider looking into OS specific mechanisms for enumerating the memory map of your process. For example, on Linux you can check the proc file system to get a memory map. With this memory map, you could then detect if what address ranges are allocated to your process.