Note: The user visible name is Lenses, however in the code and packages they're still referred to as Places. "Places" as a term will be fully retired in 11.10
Both default Lenses, unity-place-files and unity-place-applications, are in fact based on public API exposed via libunity.
Unfortunately there are no API docs available for libunity yet - but that will change in the weeks to come. Monitor planet.ubuntu.com or watch the Natty archives for a
libunity-doc package. For now there is a simple example in lp:unity-place-sample, if you cross ref that with https://wiki.ubuntu.com/Unity/Lenses you may have a chance of getting something going.
Another important library when writing lenses for Unity is Dee. It's a data model library used to do ad-hoc sharing of data models between processes (in this case the place daemon and Unity). Dee is fully documented and you can find the docs in the
libdee-doc package (or you can build it yourself from lp:dee).
To grab the code for either project you can do:
bzr branch lp:unity-place-sample
bzr branch lp:dee