95% of the time that information is provided OTA via the control channel. If available, it can be decoded via Unitrunker and a RTL-SDR dongle. If that information is not being advertised, then you have to calculate it by hand using OTA information from something like Unitrunker. P25 subscribers don't think in terms of direct frequency. They think in terms of channel ID and channel number simply because it takes less data to convey the same information.
For example, say a system has a channel ID 1 with a base frequency of 851.0125 MHz using a -45 MHz offset and 12.5 kHz channel spacing. The control channel will announce some talk group ID GOTO 1-0235. The subscribers affiliated on that talk group ID will then translate that using their channel ID database as 235 12.5 kHz channels from 851.0125 MHz, subtract 45 MHz to transmit...or (235*.00125+851.0125)=851.3063 MHz to receive and 816.3063 MHz to transmit. In this case, 851.3063 takes 3 bytes (24 bits) of information to transmit, so 48 bits if you want to include the offset frequency, where 01-0235 takes only 10 bits to transmit for nearly 5 times less info to convey the same info.
You can work this backwards if the channel ID info is not being announced once you locate the control channel. Using Unitrunker you can obtain the control channel's ID and channel number as well as other channels on the system (I'd go with alternate control channels). From there, it's just a little bit of math to reverse engineer things due to the fact there are really only a handful of channel widths (2.5 kHz, 6.25 kHz and 12.5 kHz commonly) so simply divide those by the channel number to find how far you are from the base frequency and use another channel with the same channel ID to test your calculated base frequency to see if the channel frequency matches up with the known control channel frequency or licensed frequency.