We currently have a store that services 3,000+ schools. Each school sees products (yearbooks and ads) that pertain to them. They don't see any other school's products. Obviously, creating this many stores in Magento is probably not feasible. Is there a way to filter products by URL? Is this possible in Magento, and if so, what is the best approach?
Yes this is possible.
3,000+ store views is not the best approach, though it has been done before. Plus you can customize the look to your school.
Really all you need to do is to have layered navigation turned on and have one filter to be the school. You would need to have it be able to carry over to the other categories, but that could be solved using a global variable (me just thinking) which auto appends on the URLs.
To reduce the amount of complexity use store views.
Yes you may have to create 3000+ store views. But it's worth to create 3000+ store views(If I were you write small module
And then you can assign products for each school using product import
Yes, you can create a attribute with option. and while loading on the frontend you need to setup up query filter for the new attribute. it require some programing skill.
Perhaps you're looking this problem from the wrong perspective. Having so many store views is devastating to the indexing system and doesn't make any favours to your SEO either.
I strongly recommend you consider something like customer / group specific products or categories instead -- you achieve exactly the same result without many of the downsides. There're several extension I've seen, but the one I've used myself is this one: https://amasty.com/customer-group-catalog.html
Please be careful with the responses, one of our partners who deals with mid-size enterprises tested Magento1 with 100s of stores, due to the way Magento loads data in to memory it overloads the system so you need $1,000s of hosting per month. Technically 3,000 stores are possible if you have absolutely everything else minimal and the best hosting available, otherwise no.
Now, Magento2 has changed things but there are still limitations and given it is new there are many tradeoffs to using it. There are extensions to create private sales for Magento1 but you will be best to use internal categories and have functionality to split the login to those 'pseudo-stores'.
Actually that same partner who tested all this, uses 'pseudo-stores' for countries so there are only a handful of configuration stores which cover all countries worldwide. It's not something Magento likes doing as it's really hardcoded to have a 1:1 relationship.
Yes, on paper you can but there will be compromises along the way to take it live, and it depends which are acceptable and which are not, so you'll need to find one of the Magento developers with experience of these environments to guide you and create a proof of concept.